Ars Longa, Vita Brevis

Дочерние рубрики:

Статьи из рубрики "WordPress"

Статьи, посвященные WordPress и всему, что с ним связано

Иногда встречаются ситуации, когда приложению нужно использовать функциональность, встроенную в WordPress, но при этом по ряду причин не хочется подключать установленные плагины. Типичным примером может являться скрипт, запускаемый cron'ом и, например, рассылающий письма подписавшимся на рассылку пользователям.

Обычно, если нужно подключить WordPress к приложению, поступают так:

[-]
View Code PHP
<?php
    require_once(WORDPRESS_DIR . '/wp-config.php');
?>

После этого приложению становятся доступны все функции/переменные WordPress. Тем не менее, у этого подхода есть недостаток: он подключает все активные плагины. Плохо это может быть тем, что каждый плагин может иметь порядочную (в смысле потребляемых ресурсов) инициализационную секцию: например, цена подключения плагина Simple Forum может быть 70 лишних запросов к базе данных. Читать статью «Использование движка WordPress без плагинов из стороннего приложения» полностью…

Авг 15, 2008

Известные и не очень настройки WordPress

Рубрика: WordPress
Метки:
Vladimir

В данной статье я хочу рассмотреть ряд недокументированых и плохо документированых настроек WordPress, изменить которые можно только в файле wp-config.php, но не в панели управления.

Я буду ориентироваться на WordPress 2.6, поэтому некоторые настройки, присутствовашие только в старых версиях, описаны не будут. Читать статью «Известные и не очень настройки WordPress» полностью…

В статье "Удаление старых версий статей из базы данных WordPress" я писал об особенности WordPress 2.6, а именно: о хранении старых версий статей в базе данных.

К сожалению, данная особенность WordPress очень смущает весьма популярный плагин Search Everything: при включённом поиске в тэгах или категориях из-за особенности запроса будут выдаваться статьи, помеченные как ревизии (старые версии, если говорить проще). Читать статью «Search Everything 4.7.1 и WordPress 2.6: отключаем поиск по старым версиям статей» полностью…

Одна из особенностей WordPress 2.6 — он хранит старые версии статей в своей базе данных. Это полезно, например, при анализе изменений, внесённых автором в статью.

Честно говоря, мне это никогда нужно не было — лично я считаю, что встраивать в WordPress систему контроля версий — это перебор. Впрочем, это лишь моё мнение. Возвращаемся к теме. К сожалению, WordPress не предоставляет возможности отключения данной функциональности, но в силу тех или иных обстоятельств бывает нужно удалить старые версии статей (например, для уменьшения объёма базы данных). Читать статью «Удаление старых версий статей из базы данных WordPress» полностью…

В предыдущей статье я писал про основные источники неправильной разметки в WordPress, среди которых оказалась встроенная в WordPress функция wpautop().

Для решения этой проблемы родилась идея написать плагин, который бы автоматически исправлял ошибки, вносимые функцией wpautop(). А также по возможности бы отключал её. В результате родился плагин FormatControl:

  • плагин заменяет wpautop() во всех фильтрах по умолчанию на свой (исправленный) обработчик; при этом новый фильтр не будет установлен, если какой-нибудь плагин уже убрал wpautop;
  • плагин позволяет отключить функцию wpautop() в пределах статьи путём задания дополнительного поля noautop со значением 1 (в целях совместимости с плагином WP Unformatted так же поддерживается поле sponge);
  • плагин позволяет отключить функцию wptexturize() (известную по замене прямых кавычек угловыми) в пределах статьи путём задания дополнительного поля notexturize со значением 1 (в целях совместимости с плагином WP Unformatted так же поддерживается поле sandpaper);
  • при установке своих фильтров-замен плагин добавляет их с тем же приоритетом, что был у заменяемого фильтра.

Скачать FormatControl для WordPress.

В статье "Избавляемся о ошибок xHTML-валидации при использовании JavaScript, Flash, <noindex>, CSS" рассказывается о четырёх основных источниках неправильной разметки в WordPress:

  1. JavaScript;
  2. Глобальные CSS, размещаемые в заголовке документа;
  3. Flash;
  4. Несуществующий по стандартам тег <noindex>, придуманный Яндексом

Естественно, после прочтения статьи я решил проверить свой, как я полагал, валидный, блог. В том-то и дело, что только плагал: нашёлся пятый источник неправильной разметки. Где бы Вы думали? В самом WordPress, в функции wpautop(). Читать статью «Основные источники неправильной разметки в 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» полностью…

Июнь 26, 2008

Сброс пароля в WordPress 2.5.1

Рубрика: Патчи
Метки: , , , ,
Vladimir

У WordPress 2.5.1 есть одна весьма нехорошая ошибка: не работает сброс пароля. При попытке сброса WordPress выдает следующую ошибку: "Sorry, that key does not appear to be valid". Данная ошибка исправлена в dev-версии WordPress 2.5.2.

Тем не менее, все мы люди, и нам, к сожалению, свойственно забывать. В том числе и пароли. Для восстановления пароля ждать выхода официальной версии 2.5.2 не кажется логичным, поэтому будем исправлять то, что есть. Читать статью «Сброс пароля в WordPress 2.5.1» полностью…

В статье "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 с ненулевым значением);
    • добавлена поддержка отключения иконок сервисов закладок.
Июнь 20, 2008

Патч для WassUp 1.6

Рубрика: Патчи
Метки: , , , , , ,
Vladimir

Недавно вышла очередная версия WassUp, и, что характерно, остались все старые проблемы. Для их решения готов новый патч :-) Но что меня очень разочаровывает, с разработчиками WassUp очень трудно разговаривать :-( За последние несколько месяцев я им неоднократно говорил о различных багах, но они так и остались неисправленными.

Из-за проблем с производительностью я наконец-таки снёс WassUp (слишком много переделывать, чтобы исправить все проблемы, а написан он всё же кривовато), так что данный патч будет всё же последним. Читать статью «Патч для WassUp 1.6» полностью…

Меня всегда интересовало, насколько эффективно WordPress работает с базой данных, и насколько хорошо спроектирована база данных.

Практически в каждом проекте, над которым я работаю, я использую те или иные средства для анализа производительности скрипта и поиска его слабых мест. Для разработчиков не является секретом, что во многих случаях плохая производительность работы скрипта обусловлена низкой производительностью SQL-запросов. И, как правило, низкое быстродействие запросов связано с их неоптимальностью (что включает в себя отсутствие необходимых индексов в базе данных).

Однажды столкнувшись с ужасной производительностью WordPress и не имея возможности анализировать код десятка поставленных плагинов, я стал решать задачу иначе, в результате чего родился плагин для анализа SQL-запросов. Читать статью «SqlMon: плагин для анализа SQL-запросов» полностью…

Решив уделить пару часов оптимизации своего собственного блога, я с удивлением обнаружил, что страница может генерироваться несколько секунд (!). Отойдя от шока и выяснив, в чем там дело (этому можно будет посвятить отдельную статью), я быстро разобрался с запросами к базе данных и уменьшил общее время запросов в среднем до одной секунды (ну медленный у меня сервер).

Тем не менее, это заставило меня задуматься о том, как WordPress использует собственный кэш и что можно сделать, чтобы улучшить производительность. Читать статью «WP File Cache: замена WP_Object_Cache с поддержкой долговременного кэширования» полностью…

Сегодня мне наконец-то посчастливилось найти концы (в смысле, оригинал) статьи, которую публикуют многие блоггеры (в переводе на родной язык). Статья носит название "13 Тэгов, которые следует удалить из вашей темы" (с ней можно ознакомиться, например, здесь).

В переводе меня смутило то, что автор, на мой взгляд, "экономил на спичках", вместо того, чтобы использовать что-либо стоящее, поэтому я решил обратиться к оригиналу, в надежде на то, что автор хоть как-нибудь обосновал свою точку зрения. Читать статью «Ответ на “13 Тэгов, которые следует удалить из вашей темы”» полностью…