Новый плагин syntaxhighlighter в ранних wordpress
Заставить работать 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, которые не используют его в том или ином виде. Критическая уязвимость в нем привела уже к массовым взломам сайтов и к широкой активизации «простукивалок» в поиске таковых блогов.
Awtor работает, отдыхает, немного пишет.
Оставить отзыв