Пишем посты в блоге на WordPress

В предыдущей заметке мы говорили о безопасности WordPress. Теперь переходим к написанию постов в блоге.

Визуальный редактор

Когда я впервые попытался написать пост, обнаружилась проблема. В WordPress вы пишете посты в редакторе, у которого есть два режима, между которыми можно переключаться: т. н. визуальный редактор (visual editor), работающий в режиме WYSIWYG и текстовый режим, в котором вы пишете непосредственно HTML-код. Так вот, в визуальном редакторе не отображалась панель инструментов, а перейти в текстовый режим было невозможно — соответствующая кнопка не работала. Текст в редакторе был белый и сливался с фоном. Минимальное решение проблемы заключалось в отключении визуального режима: в панели управления (dashboard) выбираем меню Пользователи->ВашЛогин->Редактор->Отключить визуальный редактор->Обновить профиль. Более основательное решение проблемы заключалось в добавлении в файл wp-config.php строки:

define('CONCATENATE_SCRIPTS', false);

Для пущего удобства форматирования постов я установил плагин для текстового редактора TinyMCE Advanced. Он позволяет добавить дополнительные кнопки на панель инструментов визуального редактора. Позже выяснилось, что переключение между визуальным и текстовым режимами доставляет пользователю адскую боль, поскольку visual editor творит с вашим HTML-кодом какой-то беспредел, меняя его по собственному (совершенно кривому) усмотрению. TinyMCE Advanced я в итоге удалил, а визуальный редактор пришлось вообще отключить (как вариант, можно просто им не пользоваться). Несколько уменьшить неудобства отсутствия WYSIWYG-редактора помог плагин Inline Preview. После установки этого плагина кнопка Просмотреть изменения в редакторе отобразит панель просмотра со страницей вашего поста, причем изменения в редакторе будут отображаться в окне просмотра в режиме реального времени.

Очистка базы данных

WordPress сохраняет все редакции (revisions) ваших постов. Это захламляет базу данных, поэтому я хотел иметь возможность удалять редакции постов. По-умолчанию WordPress такой возможности не предоставляет, чтобы ее иметь, я установил специальный плагин WP-Optimize.

Ссылки

Постоянные ссылки

Допустим, вы написали пост. У поста есть постоянный URL (Uniform Resource Locator). Причем хотелось бы, чтобы этот URL был человекопонятным, так как и вам, и кому-либо еще, возможно, понадобится сослаться на этот пост. По-умолчанию ссылки на пост имеют формат http://example.com/?p=N, где N — это уникальный ID вашего поста (а example.com — это имя вашего сайта). Чтобы изменить это поведение в WordPress Dashboard выберите меню Настройки->Постоянные ссылки и выберите другой формат ссылок, например такой /%postname%/ (имя поста). /%postname%/ — это часть URL, которая называется «ярлык» (slug) и автоматически создается WordPress для каждого поста наоснове его заголовка. Вы можете задать ярлык вручную в меню Записи->НазваниеПоста->Свойства->Ярлык.
Однако после того, как я изменил таким образом настройки постоянных ссылок, при попытке просмотреть свой пост я получил ошибку 404 (страница не найдена).
Проблема решается так:
в файле httpd.conf раскомментируем строку (удаляем #)

LoadModule rewrite_module modules/mod_rewrite.so

чтобы активировать модуль сервера Apache под названием mod_rewrite, который используется «to rewrite requested URLs on the fly».
В том же файле httpd.conf находим директиву <Directory "c:/Apache24/htdocs">. Внутри нее должна находиться директива AllowOverride FileInfo. Если ее там нет, то добавьте ее. В моем файле httpd.conf это выглядит так:

<Directory "c:/Apache24/htdocs">
    AllowOverride FileInfo
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

После изменения файла httpd.conf надо перезапустить сервер Apache.

Абсолютные и относительные ссылки

Сплошь и рядом одни посты в блоге ссылаются на другие посты. В начале поста я могу написать

В <a href="http://dvsav.ru/prev-post/">прошлом посте</a> я рассказывал про ...

а в конце поста обычно пишу

В <a href="http://dvsav.ru/next-post/">следующем посте</a> я расскажу про ...

То есть в тексте поста встречаются URL других постов. Я тестирую свой блог на локальном компьютере, я пока не зарегистрировал доменное имя для своего сайта и не знаю, какое оно будет. Как же я могу создавать ссылки на свои посты, если не знаю доменное имя (ведь доменное имя является частью URL)? Оказывается есть два вида ссылок: абсолютные и относительные. Абсолютные содержат полный путь к веб-странице, включая доменное имя. Относительные содержат путь относительно текущей веб-страницы, и этот относительный путь не содержит доменного имени. Поменяв в примерах выше абсолютные ссылки на относительные, я получу следующее:

В <a href="/prev-post/">прошлом посте</a> я рассказывал про ...
В <a href="/next-post/">следующем посте</a> я расскажу про ...

Внешний вид ссылок

Я заметил, что ссылки в моих заметках не подчеркиваются, а только выделяются цветом, так что их почти не заметно на фоне остального текста. Я решил сделать их подчеркнутыми и знал, что для этого надо будет где-то подредактировать стили CSS (Cascading Style Sheets). В настройках темы я тут же наткнулся на меню Дополнительные стили, в котором имелся редактор для написания кода CSS. Я тут же написал:

a:link {
  text-decoration: underline;
}

Сохранив изменения, я увидел, что все ссылки на сайте стали подчеркнутыми. Выглядело это ужасно, на самом деле надо было изменить стиль ссылок только для текста постов. Поэтому я открыл первый попавшийся пост, просмотрел его html-код и увидел, что текст поста обернут в <div class="entry-content">...</div>. Значит в приведенном выше CSS надо было написать:

.entry-content a:link {
  text-decoration: underline;
}

Теперь ссылки стали подчеркнутыми только внутри текста постов.

Подсветка синтаксиса в исходном коде

Мой блог — о программировании, поэтому я собираюсь постить исходный код. Тут есть две проблемы.

  • Во-первых, если писать исходный код «как есть», он может неправильно восприниматься веб-браузерами. Банальный пример — знак «меньше». Он используется в html-коде как служебный символ, поэтому в тексте поста его приходится заменять на конструкцию &lt;. Это специальная нотация для отображения тех символов, которые являются в html служебными.
  • Во-вторых, хочется иметь подсветку синтаксиса.

1-ю проблему можно решить, обернув свой код в теги

<pre>...</pre>

Но если вы хотите иметь подсветку синтаксиса, то нужен специальный плагин. Сначала я установил SyntaxHighlighter Evolved, так как он был самым популярным. Но чуть позже поменял его на другой плагин CodeColorer — он показался мне более удобным. После этого я мог писать исходный код как есть, оборачивая его в теги [cc]…[/cc]

В следующей заметке я представлю вам минимально необходимую с моей точки зрения подборку плагинов для WordPress.

Добавить комментарий

Ваш адрес email не будет опубликован.