Статьи из рубрики «Патчи» RSS

Патчи и исправления к WordPress и различным плагинам

Оптимизация All in One SEO Pack

Как оказалось, All in One SEO Pack — один из основных источников запросов к базе данных на блогах с большим количеством страниц (page). Всё дело в том, что в All in One SEO Pack есть одна неотключаемая особенность: он пытается переписать все ссылки, которые выводятся через функцию wp_list_pages() (обычно эта функция вызывается из заголовка или подвала темы и используется для создания меню).

Вообще переписывание ссылок — это отдельная история, заслуживающая отдельной статьи. Если вкратце, то берёт метаданные из поста и заменяет ими title и текст ссылки.

All in One SEO Pack: Edit Page

Что характерно, если поле Title Attribute пустое, то All in One SEO Pack вообще затрёт title ссылки.

Проблема с запросами возникает из-за того, что All in One SEO Pack читает метаданные для каждой страницы, присутствующей в результате, который вернула функция wp_list_pages(). Если в меню тридцать страниц, то в результате получим тридцать лишних запросов к базе данных. Умножаем на количество показов страниц (страниц в широком смысле, а не в терминах ) и получаем большую цифру. Далее »

Автор: Vladimir, опубликовано в: Патчи, комментариев: 6
25
Ноя
2009

Еще одна оптимизация NextGen Gallery

NextGen Gallery имеет одну неприятную особенность: при каждом обращении к блогу выполняется обновление (UPDATE в терминах MySQL) таблицы wp_options. Хотя для «средних» блогов это не критично, для хорошо посещаемых ресурсов это плохо по ряду причин:

  1. Обновление таблицы wp_options сбрасывает кэш запросов MySQL к таблице wp_options, что приводит к необходимости реального выполнения запросов на выборку данных (с учётом огромного количества записей — благодаря всяким разным плагинам — это лишний трафик между и MySQL).
  2. Выполнение операции обновления таблицы при использовании MyISAM приводит к блокировке таблицы; при высокой посещаемости это приводит к вынужденному ожиданию освобождения таблицы и негативно сказывается на нагрузке и производительности.
  3. При использовании плагинов объектного кэширования каждый вызов update_option() приводит к необходимости обновления и записи кэша; обновление файлового объектного кэша приводит к лишним обращениям к диску (которых на виртуальных серверах лучше избегать).
  4. В конце концов, это лишний запрос, который не является необходимым.

Далее »

Автор: Vladimir, опубликовано в: Патчи, комментариев: 17
23
Ноя
2009

WordPress 2.8 и плагин Post Templates

 2.8 сказался не самым лучшим образом на плагине Post Templates от Vincent Pratt. На данный момент в плагине присутствуют несколько серьёзных ошибок, которую сводят его практическую пользу к нулю. Хуже всего, что автор, по-видимому, забросил , и исправлять ошибки теперь некому.

Итак, имеются следующие ошибки:

  • «You do not have sufficient permissions to access this page» при попытке создания нового шаблона или редактировании существующего (и еще в нескольких местах) — появилась в  2.8.1 в результате исправления этой уязвимости;
  • Fatal error: Maximum execution time of 30 seconds exceeded in /wp-includes/plugin. on line 385 при заходе на страницу редактирования страниц (звучит-то как!);
  • невозможность сохранения шаблонов, так как отсутствует кнопка «Сохранить» (это если вы побороли первую ошибку, либо у вас  2.8).

Далее »

Автор: Vladimir, опубликовано в: Патчи, комментариев: 8
6
Авг
2009

Simple Tags 1.6.6 и автоматические ссылки меток на русском языке

Полгода назад я рассказывал о том, что Simple Tags не умеет работать с многобайтовыми символами (коими, к слову, являются русские буквы в кодировке UTF-8). За это время вышло восемь или девять новых версий плагина, но проблема с поддержкой UTF-8 всё же осталась.

Так сложилось, что именно сегодня я решил обновить . Патчить код было лень, я надеялся, что у Lecactus’а лежит пропатченная свежая версия. Увы, только 1.6.3. Далее »

Автор: Vladimir, опубликовано в: Патчи, Плагины WordPress, комментариев: 14
2
Июнь
2009

WordPress, FastCGI и редирект 301: часть 2

Более изящное решение, нежели представленное в первой части (WordPress, FastCGI и редирект 301).

В первой части предлагалось при использовании web-сервера закомментировать проверку на SAPI (if ( php_sapi_name() != 'cgi-fcgi' )). Однако есть лучшее решение. Далее »

Автор: Vladimir, опубликовано в: Патчи, комментариев: 3
13
Март
2009