Иногда встречаются ситуации, когда приложению нужно использовать функциональность, встроенную в WordPress, но при этом по ряду причин не хочется подключать установленные плагины. Типичным примером может являться скрипт, запускаемый cron'ом и, например, рассылающий письма подписавшимся на рассылку пользователям.
Обычно, если нужно подключить WordPress к приложению, поступают так:
<?php
require_once(WORDPRESS_DIR . '/wp-config.php');
?>
После этого приложению становятся доступны все функции/переменные WordPress. Тем не менее, у этого подхода есть недостаток: он подключает все активные плагины. Плохо это может быть тем, что каждый плагин может иметь порядочную (в смысле потребляемых ресурсов) инициализационную секцию: например, цена подключения плагина Simple Forum может быть 70 лишних запросов к базе данных. Читать статью «Использование движка WordPress без плагинов из стороннего приложения» полностью…
В статье "Удаление старых версий статей из базы данных WordPress" я писал об особенности WordPress 2.6, а именно: о хранении старых версий статей в базе данных.
К сожалению, данная особенность WordPress очень смущает весьма популярный плагин Search Everything: при включённом поиске в тэгах или категориях из-за особенности запроса будут выдаваться статьи, помеченные как ревизии (старые версии, если говорить проще). Читать статью «Search Everything 4.7.1 и WordPress 2.6: отключаем поиск по старым версиям статей» полностью…
В предыдущей статье я писал про основные источники неправильной разметки в WordPress, среди которых оказалась встроенная в WordPress функция wpautop().
Для решения этой проблемы родилась идея написать плагин, который бы автоматически исправлял ошибки, вносимые функцией wpautop(). А также по возможности бы отключал её. В результате родился плагин FormatControl:
- плагин заменяет
wpautop() во всех фильтрах по умолчанию на свой (исправленный) обработчик; при этом новый фильтр не будет установлен, если какой-нибудь плагин уже убрал wpautop;
- плагин позволяет отключить функцию
wpautop() в пределах статьи путём задания дополнительного поля noautop со значением 1 (в целях совместимости с плагином WP Unformatted так же поддерживается поле sponge);
- плагин позволяет отключить функцию
wptexturize() (известную по замене прямых кавычек угловыми) в пределах статьи путём задания дополнительного поля notexturize со значением 1 (в целях совместимости с плагином WP Unformatted так же поддерживается поле sandpaper);
- при установке своих фильтров-замен плагин добавляет их с тем же приоритетом, что был у заменяемого фильтра.
Скачать FormatControl для WordPress.
Стараниями Дмитрия Лялина я узнал про еще один плагин WordPress для подсветки синтаксиса — CodeColorer. Как и многие другие плагины (напрмер, WP CodeBox Эрика Вонга или мой CodeBox), CodeColorer использует в качестве движка библиотеку GeSHi. Читать статью «Обновление для CodeColorer 0.6.0» полностью…
В Австралии и США большой популярностью пользуется плагин Clicky — Web Analytics 2.0. Как следует из названия, Clicky является еще одним сервисом для анализа статистики веб-сайта. Судя по приведённой на сайте таблице, Clicky, образно говоря, "затыкает за пояс" даже такого конкурента, как Google Analytics.
Себе на сайты я ставить Clicky не пытался, но наблюдал его в действии в проекте, над которым работаю. Могу сказать, что сервис действительно мощный и удобный, а плагин Clicky для WordPress относится к разряду "сконфигурировал и забыл".
Всё хорошо, но по традиции есть одно "но": если на странице используется, например, Prototype, то плагин начинает кидаться ошибками JavaScript. Читать статью «Clicky 0.3b для WordPress и проблемы с JavaScript» полностью…
В статье "CodeBox: подсветка синтаксиса для WordPress" я говорил, что вместо того, чтобы постоянно исправлять старые и новые баги в плагине WP CodeBox, я сделал форк, который будет жить своей жизнью, но при этом будет совместимым с WP CodeBox, чего бы Eric Wang там ни творил.
Обещания, как говорится, нужно держать
Сегодня у меня выдались пять часов свободного времени, и я занялся доработкой/исправлением плагина. Фактически, из исходного кода остались только имена параметров, всё остальное было переписано в "родном, мудром, обьектно-ориентированном" стиле.
В результате получился CodeBox 0.5 (функционально соответствующий WP CodeBox 1.2.2.1). К версии 1.0 планирую довести до ума поддержку TinyMCE (в своё время несовместимость WP CodeBox с TinyMCE привела к тому, что я не использую WYSIWYG), поменять кое-что в JavaScript, добавить новые опции и т.п. Поддержка интернационализации уже есть, осталось заняться переводом
Как говорится, планов очень много, где бы время взять?
Скачать CodeBox 0.5 для WordPress.
PS - по сравнению с предыдущей версией, плагин "похудел" практически на 200 килобайт. Работа идёт!
Два с половиной месяца назад я писал про альтернативную версию плагина ОднаКнопка для WordPress. Что же, пришла пора Русскому Программисту написать что-то своё.
В результате появился небольшой такой плагинчик, по функциональности идентичный (и в чём-то даже превосходящий) ОднуКнопку.
Достоинства:
- не требует внешних скриптов (всё, что нужно для работы, присутствует на сервере);
- запросы отсылаются непосредственно сервису закладок и никуда более — если у Вас паранойя, Вам это понравится (ОднаКнопка отсылает их еще и на свой сервер);
- для отображения бокса с сервисами закладок используется XHTML-шаблон, который пользователь может переделать по своему вкусу;
- очень легко добавлять новые сервисы закладок;
- поддерживается больше сервисов закладок;
- для добавления статьи (которая отображается шаблоном single.php) в сервис закладок не требуется поддержка JavaScript (любители Lynx, специально для вас);
- все иконки сервисов закладок хранятся в одном файле (техника, известная как CSS rollovers); как следствие, для загрузки всех иконок требуется один запрос, а не двадцать четыре;
- zero configuration — поставил и забыл.
Установка
Копируете файл onebutton.zip в каталог с плагинами WordPress (wp-content/plugins), разархивируете, после чего активируете в wp-admin/plugins.php.
Скачать плагин OneButton for WordPress.
История изменений:
- Версия 0.2:
- поддержка интернационализации;
- поправлены иконки и недочеты в разметке (bersy, большое спасибо!);
- улучшена поддержка Internet Explorer 6 (как я его не люблю!).
- Версия 0.2.1:
- добавлены новые сервисы закладок (RuCity, LinkStore, NewsLand);
- исправлены потенциальные проблемы с форматированием (Настя, Alex, спасибо за тестирование!);
- улучшена поддержка Internet Explorer 6 (как я его не люблю!).
- Версия 0.3b — Alex, спасибо за идеи:
- возможность открывать сервисы в новом окне (путём добавления в ссылку
target="blank");
- возможность добавлять отключать
rel="nofollow" в ссылке на сервис;
- возможность показывать кнопку только в полной версии статьи/страницы (в этом случае не подгружается ненужный более JavaScript — минус один запрос);
- кнопка не должна попадать в фид или трэкбэк;
- возможность выбора показываемых сервисов закладок.
-
Версия 0.3b2:
- добавлены сервисы Lopas и Закладки I.UA (подсмотрено здесь);
- автоматическое использование описания (мета-тэг
description статьи) и тэгов (tags + category) для сервисов, которые это поддерживают (Закладки I.UA, Blink, Simpy, Spurl, Текст 2.0, RuCity).
-
Версия 0.3b3:
- добавлены сервисы: Connotea, Bibsonomy, Trucking Bookmarks, Коммунизм и UCA закладки в UA.IX;
- появилась возможность не показывать OneButton для выбранных статей (путём добавления поля
disable_onebutton с ненулевым значением);
- добавлена поддержка отключения иконок сервисов закладок.
Недавно вышла очередная версия WassUp, и, что характерно, остались все старые проблемы. Для их решения готов новый патч
Но что меня очень разочаровывает, с разработчиками WassUp очень трудно разговаривать
За последние несколько месяцев я им неоднократно говорил о различных багах, но они так и остались неисправленными.
Из-за проблем с производительностью я наконец-таки снёс WassUp (слишком много переделывать, чтобы исправить все проблемы, а написан он всё же кривовато), так что данный патч будет всё же последним. Читать статью «Патч для WassUp 1.6» полностью…
Меня всегда интересовало, насколько эффективно WordPress работает с базой данных, и насколько хорошо спроектирована база данных.
Практически в каждом проекте, над которым я работаю, я использую те или иные средства для анализа производительности скрипта и поиска его слабых мест. Для разработчиков не является секретом, что во многих случаях плохая производительность работы скрипта обусловлена низкой производительностью SQL-запросов. И, как правило, низкое быстродействие запросов связано с их неоптимальностью (что включает в себя отсутствие необходимых индексов в базе данных).
Однажды столкнувшись с ужасной производительностью WordPress и не имея возможности анализировать код десятка поставленных плагинов, я стал решать задачу иначе, в результате чего родился плагин для анализа SQL-запросов. Читать статью «SqlMon: плагин для анализа SQL-запросов» полностью…
Решив уделить пару часов оптимизации своего собственного блога, я с удивлением обнаружил, что страница может генерироваться несколько секунд (!). Отойдя от шока и выяснив, в чем там дело (этому можно будет посвятить отдельную статью), я быстро разобрался с запросами к базе данных и уменьшил общее время запросов в среднем до одной секунды (ну медленный у меня сервер).
Тем не менее, это заставило меня задуматься о том, как WordPress использует собственный кэш и что можно сделать, чтобы улучшить производительность. Читать статью «WP File Cache: замена WP_Object_Cache с поддержкой долговременного кэширования» полностью…
Небольшой плагин для любителей HTTPS — помещает панель управления WordPress (админку, если по-русски) за HTTPS. Shane, специально для тебя!
Возможно, кому-нибудь даже пригодится. Скачать WP Secure Admin.
Update: специальный бонус: плагин WP Secure Login — безопасный логин/регистрация/восстановление пароля. Скачать WP Secure Login.
Сегодня явно день патчей
Полтора месяца назад я уже писал про замечательный плагин Wassup, а также о его нелюбви к Windows. Помимо этой ошибки, я обратил внимание на нелюбовь плагина к строкам, состоящим из многобайтных символов (например, UTF-8).
Сегодняший патч исправляет:
- проблему с разделителями каталогов (традиционно);
- мелкие ошибки, связанные с невалидностью генерируемого HTML-кода;
- добавляет поддержку строк, состоящим из многобайтных символов (поддержка таких строк требует наличия активированного расширения PHP mb_string);
- добавляет
rel="nofollow" к ссылкам в блоках типа 'Top 5 Referrers', 'Top 5 Search Terms'.
Скачать патч в формате unified diff.
Патч нужно применить рекурсивно к каталогу /wp-content/plugins/wassup.
Как-то на досуге я занялся анализом приходящего спама и обратил внимание, что практически 98% спама в комментариях приходят с IP-адресов, замеченных в рассылке спама по электронной почте. А спамеры обычно попадают в черные списки (blacklist).
DNSBL — DNS blacklist или DNS blocklist — списки хостов, хранимые с использованием системы архитектуры DNS. Обычно используются для борьбы со спамом. Почтовый сервер обращается к DNSBL, и проверят в нём наличие IP-адреса клиента, с которого он принимает сообщение. При положительном ответе считается, что происходит попытка приёма спам-сообщения, и оно блокируется (не принимается сервером, и, как правило, отправителю отсылается уведомление об этом).
Идея состоит в том, чтобы написать расширение для WordPress, проверяющее наличие IP-адреса комментатора в чёрном списке. Читать статью «Использование DNSBL для борьбы со спамом в комментариях» полностью…
Сегодня я установил русифицированную версию плагина Subscribe to Comments 2.1.2 и с удивлением обнаружил, что русификация-то и не работает (хотя языковые файлы присутствуют).
На сайте, с которого я скачал эту русифицированную версию, утверждается, что Проверена совместимость до версии WP: 2.3.3
, поэтому вполне возможно, что проблема возникла в WordPress 2.5. Я не буду это утверждать наверняка, ибо с gettext я знаком весьма поверхностно. Читать статью «Патч для Subscribe to Comments 2.1.2» полностью…
Ранее я уже писал про замечательный плагин Wassup, а также о его нелюбви к Windows. Вышла версия 1.5, а баг (увы!) не поправили.
Скачать патч в формате unified diff.
Патч нужно применить к файлу /wp-content/plugins/wassup/lib/action.php.
Как и в прошлый раз, помимо исправления ошибки с разделителями каталогов, патч исправляет небольшую ошибку, связанную с невалидностью (инвалидностью?) генерируемого (X)HTML-кода.