Как писать посты о PHP в WordPress
Вот один из случаев... которых не было.
Из их файлов... которых нет.
©MenInBlack2
Об этом не пишут в блогах, не обсуждают на форумах, но если вы не сталкивались с проблемами при написании постов с исходным PHP-кодом, или блоками AdSense, то я чего-то не понимаю (объясните тогда).
1. Для начала, скачайте и установите новую версию WordPress.
В старых версия багов только больше.
Для переноса постов и темы из старой версии надо было сделать бэкап:
- Скачать из root-ftp-директории блога (из /):
- wp-config.php
- .htaccess (если изменяли) и созданные вами файлы (если загружали в /) - /wp-content/ со всеми вложенными папками
- Сделать экспорт таблиц БД:
из phpMyAdmin (не помните логин/пароль - см. wp-config.php)
Экспорт / Выделить все таблицы, как SQL, Упаковать .zip / OK
2. Улучшаем представление кода php в блоках <pre>
Наверное, вы заметили, что кавычки даже в <pre></pre> (даже если заменить " на ") получаются вот такие: «» (эти я просто скопировал через буфер обмена, можно также: « »). То есть, если кто-то решит использовать пример вашего кода - его ожидают обломы.
Здесь без хака файлов вордпреса не обойтись. Редактируем:
/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-кодом надо ещё заменить специальные символы:
- копируем весь код в Блокнот (
+ R, notepad)
- Заменяем (Ctrl+H): «<» → «<», «>» → «>», «\» → «\»
В коде адсенс можно удалить перевод строки между </script> и <script...
Сохраним код поста в *.htm (или *.txt) файл. Это нужно, т.к. при повторном редактировании будут баги в блоках с php и адсенсом. Поэтому, в следующий раз надо будет редактировать код в блокноте, потом вставлять в режиме «Код» вместо старого и сохранять изменённый пост.
июля 24, 2008 в 17:43
Спасибо за информацию. Пригодилась.
октября 20, 2008 в 14:43
А как сделать, чтобы при сохранение кода, символы не заменялись на их html сущности?
[mrkto: Кажется в пункте 2 это и делается.]
октября 20, 2008 в 20:11
2 Анатоль: Работать в html режиме, отключив визуальный редактор в профиле.
июля 12, 2010 в 11:34
Мда - как же победить?
Допустим Мне надо отредактировать запись - переключаюсь в html, ну а как редактировать текст?