Написание WordPress плагина для отображения краткой биографии автора

Дата публикации:Февраль 24, 2011

Мы видели, что в большинстве случаев добавление сценариев jQuery и редактирование шаблонов позволяет добиться поставленной цели. Однако, давайте представим себе более сложное развитие событий, которое будет затрагивать нашу стандартную тему и гипотетического клиента из прошлой статьи.

Когда мы настраивали стандартную тему, я предполагал, что клиент хочет увидеть сайт в «журнальном» ключе. Очень часто для такого подхода характерно повышенное внимание к авторам записей. В данном случае важно не просто указать скупой никнейм, из которого вряд ли можно почерпнуть какую-то полезную информацию; важно предоставить посетителям краткую биографию автора: его имя с фамилией, увлечения, и т.д., поскольку это выглядит более профессионально. В то же самое время указанные материалы не должны влиять на удобочитаемость основной записи. Предположим, что гипотетический клиент обладает сетью новостных сайтов, на которых он хочет увидеть реализацию биографии автора.

В случае с одним конкретным WordPress сайтом решить поставленную задачу можно довольно просто: с помощью тега the_author (для получения имени и фамилии) и отдельного тега для получения биографии из пользовательской панели (если, конечно, биография была указана). Кроме того, можно написать jQuery скрипт, который будет создавать отдельный div для биографии. Однако достаточно столкнуться с сетью сайтов, как все эти способы окажутся неэффективными. Никто не захочет вбивать вручную один и тот же код для нескольких десятков сайтов. Тем более, если они обладают различными темами (отличными от стандартной). Тем более, если у большинства из них не подключен jQuery.

Только самый отчаянный разработчик рискнет выполнить такой объем работ. Поправка: ненужный объем работ. Гораздо проще написать отдельный плагин WordPress. С помощью плагина данная функциональность с легкостью будет применена к любому количеству сайтов, вне зависимости от установленных тем. Давайте приступим к его написанию!

Создание плагина

Ниже мы приведем код, который будет отвечать за получение биографии автора. Основные действия описаны в комментариях:

...
 //add author function
 function addAuthor($text) {
 /*переменная $text принимает контент от фильтра*/
 //проверяем, указал ли автор имя, фамилию и url
 //если нет, то выводим на экран ссылку "Find out more"
 //и используем его никнейм (который является обязательным).
 if (get_the_author_meta('user_url')){
 $bioUrl = "<a href='".get_the_author_meta('user_url')."'>
 Find Out More</a>";
 }
 if (get_the_author_meta('first_name')
 && get_the_author_meta('last_name')){
 $bioName = get_the_author_meta('first_name').
 " ".get_the_author_meta('last_name');
 }else{
 $bioName = get_the_author_meta('nickname');
 }

//проверяем, указал ли автор краткое описание
 //если нет, то биография автора не будет отображена.
 if (get_the_author_meta('description')){
 $bio = "<div class='authorName'>by <strong>".$bioName."</strong>
 <div class='authorBio'>"
 .get_the_author_meta('description')." ".$bioUrl."
 </div>
 </div>";
 }else{
 $bio = "<div class='authorName'>
 by <strong>".$bioName."</strong>
 </div>";
 }
 //возвращаем контент записи
 //и добавляем биографию в ее начало
 return $bio.$text;
 }//addAuthor

add_filter('the_content', 'addAuthor');
 ...

Теперь, для того чтобы биография получила удобное представление, необходимо добавить некоторые стили. Для этого мы создадим в папке с плагином отдельную стилевую таблицу authover.css и добавим в нее следующие стилевые правила:

.authorBio {
    border-top: 2px solid #666;
    border-bottom: 2px solid #999;
    background-color: #ccc;
    padding: 10px;
    font-size: 10px;
}

Основная причина, по которой я создал отдельную стилевую таблицу, состояла в том, чтобы проиллюстрировать передовую практику использования функций wp_register_style и wp_enqueue_style, входящих в Script API. Эти две функции регистрируют новую стилевую таблицу и загружают ее, тем самым гарантируя, что никаких конфликтов с другими стилевыми таблицами (в результате совпадения имен) не произойдет.

За название моей таблицы стилей я даже не беспокоюсь, поскольку оно в 99% случаев не вызовет никаких конфликтов, однако вам, как разработчикам, полезно будет знать о существовании рассмотренных выше функций, так как они часто используются в различных плагинах. Отдельная стилевая таблица позволяет забыть о длительном блуждании в PHP-коде. Все, что потребуется пользователю при стилизации своего проекта — это открыть стилевую таблицу, найти необходимые стили и заменить их.

Теперь перейдем к функции authorcss(). Я хочу, чтобы стилевая таблица была зарегистрирована и загружена еще до хука wp_head. Для этого нам понадобится использовать хук действий init. Ниже приведен код функции с комментариями:

...
function authorCSS() {
  //создаем переменные для основных путей к файлу стилевой таблицы
  $authorStyleUrl =
    WP_PLUGIN_URL . '/add_author_bio-tbs/authover.css';
  $authorStyleFile =
    WP_PLUGIN_DIR . '/add_author_bio-tbs/authover.css';
  //проверка существования файла
  if ( file_exists($authorStyleFile) ) {
    //регистрация и вызов таблицы стилей
      wp_register_style('authorStyleSheet', $authorStyleUrl);
      wp_enqueue_style( 'authorStyleSheet');
    }
}
//вызов функции authorCSS при инициализации WordPress
add_action('init', 'authorCSS');

Теперь нам достаточно активировать созданный плагин через панель администратора и проверить его функционирование в WordPress.

Результат его работы приведен на скриншоте:

Поделиться

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.