Mr.KTO blog

Как писать посты о PHP в WordPress

Вот один из случаев... которых не было.
Из их файлов... которых нет.
©MenInBlack2

Об этом не пишут в блогах, не обсуждают на форумах, но если вы не сталкивались с проблемами при написании постов с исходным PHP-кодом, или блоками AdSense, то я чего-то не понимаю (объясните тогда).

1. Для начала, скачайте и установите новую версию WordPress.

В старых версия багов только больше.

Для переноса постов и темы из старой версии надо было сделать бэкап:

  1. Скачать из root-ftp-директории блога (из /):
    - wp-config.php
    - .htaccess (если изменяли) и созданные вами файлы (если загружали в /)
  2. /wp-content/ со всеми вложенными папками
  3. Сделать экспорт таблиц БД:
    из phpMyAdmin (не помните логин/пароль - см. wp-config.php)
    Экспорт / Выделить все таблицы, как SQL, Упаковать .zip / OK

2. Улучшаем представление кода php в блоках <pre>

Наверное, вы заметили, что кавычки даже в <pre></pre> (даже если заменить " на &#34;) получаются вот такие: «» (эти я просто скопировал через буфер обмена, можно также: &laquo; &raquo;). То есть, если кто-то решит использовать пример вашего кода - его ожидают обломы.

Здесь без хака файлов вордпреса не обойтись. Редактируем:

/wp-includes/formatting.php - закомментировать следующее так:
    if (isset($curl{0}) && '<' != $curl{0} && $next) { // If it's not a tag
        // static strings
    //    $curl = str_replace($static_characters, $static_replacements, $curl);
        // regular expressions
    //    $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
...
...
function convert_smilies($text) {
...
    //    $content = preg_replace($wp_smiliessearch, $wp_smiliesreplace, $content);

Форматирование блоков <pre> можно настроить, редактируя файл *.css темы.
Для данной темы - из админки: Внешний вид / Редактор Тем / Список стилей - добавляем: (UPDATE: Добавлены строки для переноса текста внутри <pre>. Спасибо T. Longren.)

pre {
    color: #0000CD;
    border-left: 1px solid #0000CD;
    padding-left: 8px;
    font-size: 12px;
    white-space: pre-wrap;       /* css-3 */
    white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
    white-space: -pre-wrap;      /* Opera 4-6 */
    white-space: -o-pre-wrap;    /* Opera 7 */
    word-wrap: break-word;       /* Internet Explorer 5.5+ */
}

3. Теперь создаём новый пост.

Сначала пишем весь текстовый контент, ставим ссылки, управляем форматированием - всё это в визуальном редакторе. В тех местах, где должны будут быть листинги php-кода и блоки AdSense, оставляйте какие-нибудь метки, вроде «[здесь-пример-php-кода-1]».

Теперь переходим в режим «Код»(таб над полем редактирования) и заменяем [здесь-пример-php-кода]-блоки на php-код, заключённый в тэги <pre></pre> или <code></code> (это сохранит пробелы, переводы строк).
Блоки для адсенса заменяем на <script...-код адсенса.

Но в блоке с php-кодом надо ещё заменить специальные символы:
- копируем весь код в Блокнот (WinKey + R, notepad)
- Заменяем (Ctrl+H): «<» → «&lt;», «>» → «&gt;», «\» → «&#92;»
В коде адсенс можно удалить перевод строки между </script> и <script...

Сохраним код поста в *.htm (или *.txt) файл. Это нужно, т.к. при повторном редактировании будут баги в блоках с php и адсенсом. Поэтому, в следующий раз надо будет редактировать код в блокноте, потом вставлять в режиме «Код» вместо старого и сохранять изменённый пост.

Понравился пост? – Поделитесь ссылкой:

Комментарии (4) на “Как писать посты о PHP в WordPress”

  1. Андрей пишет:

    Спасибо за информацию. Пригодилась.

  2. Анатоль пишет:

    А как сделать, чтобы при сохранение кода, символы не заменялись на их html сущности?

    [mrkto: Кажется в пункте 2 это и делается.]

  3. seolamo :) пишет:

    2 Анатоль: Работать в html режиме, отключив визуальный редактор в профиле.

  4. weL.ComE_AmdinoWich пишет:

    Мда - как же победить?
    Допустим Мне надо отредактировать запись - переключаюсь в html, ну а как редактировать текст?

Оставить комментарий