Новый плагин syntaxhighlighter в ранних wordpress

30 08 11

плагин syntaxhighlighterЗаставить работать syntaxhighlighter последних версий с wordpress старых версий не получается. Уже с версии 2.3 этого не получается. Коды изменены с учетом изменений в функционале новых версий wordpress. Выход из проблемной ситуации имеет один путь  — переход на последние версии WP. Учитывая отсутствие поддержки старых wordpress в плане уязвимостей и хсс, разработчики так же толкают нас к новым версиям. Вот только оправданно ли это  — трудный вопрос. Если не считать некоторых сомнительных плюсов в функционале, закрытие найденных уязвимостей, то в новых WP и нет ничего примечательного против старых версий.

Полную интеграция многопользовательской версии MU с изрядным увеличением объема дистрибутива я не считаю таким уж подарком вебмастеру. Больше похоже на втюхивание ненужного товара в комплекте с другими в супермаркетах.

Многие вебмастера в силу тех или иных причин не торопятся обновляться, но все же хотят применять плагин syntaxhighlighter с новым функционалом.

Есть другой путь решения проблемы  — попробовать интегрировать syntaxhighlighter последних версий с новыми функциональными возможностями применительно к wordpress, к примеру, версии v2.7.

Чем отличается функционал новых syntaxhighlighter  — изменением названий используемых функций.

Первым делом отключаем (комментированием) проверку наличия функции esc_html, которая не используется в ранних версиях, в файле syntaxhighlighter.php.

//if (! function_exists(’esc_html’)) return;

Изменяем функцию do_shortcode_tag_keep_escaped_tags. В ранних версиях она имеет немного другой код, приведем их к единому соответствию в файле, вставив взамен

// функция изменена
function do_shortcode_tag_keep_escaped_tags($m){
global $shortcode_tags;
$tag = $m[1];
$attr = shortcode_parse_atts($m[2]);
if (isset($m[4])){return call_user_func($shortcode_tags[$tag],$attr,$m[4],$tag);}
else {return call_user_func($shortcode_tags[$tag],$attr,NULL,$tag);}
}

Далее, меняем используемые функции esc_html на htmlspecialchars, esc_attr на attribute_escape, esc_js на js_escape.

После всех этих изменений syntaxhighlighter evolved должен начать работать и в ранних версиях wordpress. Во всяком случае, у меня на локальном сервере с версией wp 2.7 заработал вполне успешно.

Остановимся на одном важном моменте. Ничего не могу сказать о том, насколько внесенными изменениями мы можем навредить себе в плане защиты от хакеров. Первоначальный беглый взгляд на используемые функции старые и новые выявил их практическую аналогичность. Однако сами понимаете, что полных гарантий вам никто не даст.

Свежий пример  — широко распространенный плагин timthumbs с одноименным файлом. Сейчас практически и нет сайтов на wordpress, которые не используют его в том или ином виде. Критическая уязвимость в нем привела уже к массовым взломам сайтов и к широкой активизации «простукивалок» в поиске таковых блогов.

Подписка без комментария.
Уведомить о отзывах по e-mail

Оставить отзыв