Markdown плагин для WordPress 3.4.1

Обзор, установка и настройка Markdown плагина для WordPress.

Markdown QuickTags

Markdown QuickTags 0.8.2 — этот плагин полностью заменяет встроенный редактор WP, что лично мне не очень понравилось. Полноэкранный режим существенно уступает «родному», при этом тултипы для кнопок прячутся за верхний край экрана. В полноэкранном режиме нет кнопки «Сохранить».

В кириллической раскладке, вместо запятой вставляется 2 угловые скобки — жесть.

Позволяет менять шрифты, хотя для Markdown разметки более уместно использовать моноширинные шрифты.

И самое не практичное /бл**! Снова запятую не могу поставить!/ это то, что Markdown разметку в итоге нужно конвертировать в HTML. Есть и обратное преобразование, но лучше бы это было фоном.

Не зачёт.

Markdown on Save Improved

Markdown on Save Improved 2.2 — тут уже интересней.. Остается родная панель редактирования, конвертировать вручную ничего не нужно. При редактировании, в панели справа появляется дополнительный блок с 2-мя чекбоксами:

Панель управления конвертирования Markdown to HTML

Интересно, что после деактивации (удаления) плагина в исходном коде написанной с Markdown-разметкой статьи остался валидный HTML код. Т.е. преобразование разметки в HTML происходит не на этапе рендеринга, а при сохранении статьи. Таким образом при сохранении статьи сохраняется 2 копии текста — исходный для редактирования и преобразованный в HTML для отображения на сайте.

Заметил одну интересную особенность — если править статью с включенным плагином, после выключить плагин, изменить статью в базовом редакторе, а потом снова включить плагин — то вы увидите последнюю версию документа, отредактированного с включенным плагином. Последние изменения, которые вносились при отключенном плагине не будут доступны. Это происходит, опять же, из-за того, что сохраняется 2 копии документа.. Да есть свои лишения.

Ну и провозился я с этим плагином, пока нормально настроил рендеринг и подсветку кода..

Вкратце, нужно выполнить 2 действия:
1. Добавить возможность задавать тип кода после 3-х тильд.
Для этого подменим расширенную версию (позволяет использовать тильды для оборачивания кода) библиотеки markdown-extra.php на эту, она же здесь на гитхабе. Это пулл, который еще не вошел в официальный репозиторий библитотеки php-markdown.

Но markdown-extra.php все еще довольно криво экранирует HTML сущности в блоке кода, поэтому нужно добавить один хук для экранирования этих участков кода.

  1. Экранируем вывод блока кода с помощью хука:
    В файле рендеринга контента content.php тело поста необходимо рендерить методом the_content().
    В случае, если используется get_the_content() необходимо явно активировать тригер экранирования (и прочие) для запуска обработчика так:
$content = get_the_content();
$content = apply_filters('get_the_content', $content);

Добавим хук в functions.php:

add_filter('the_content', 'my_escape_code_block', 11);
function my_escape_code_block($content)
{
return preg_replace_callback(
  '/(

<

pre><code[^>]*>)\n*(.+?)\n*(<\/code><\/pre>)/si',
  create_function('$match', 'return $match[1] . htmlentities($match[2], ENT_NOQUOTES, "utf-8", false) . $match[3];'),
  /*function ($match) { // PHP 5.3
    return $match[1] . htmlentities($match[2], ENT_NOQUOTES, 'utf-8', false) . $match[3];
  },*/
  $content
);
}

Наслаждаемся))

Советы

  1. Можно включить «визуальный» режим и Wysiwig редактор, закомментировав 2 строки в файле плагина «:
// add_action( 'load-post.php', array( $this, 'load' ) );
// add_action( 'load-post-new.php', array( $this, 'load') );
Автор предупреждает! Использование визуального режима вместе с Markdown плагином может доставить много головной боли, и просит воздержаться от этого!

Документация

Документация расширенной версии здесь, мануал по базовому синтаксису разметки Markdown тут.