WordPress: Добавление содержимого в каждый пост при помощи фильтров

WordPress: Добавление содержимого в каждый пост при помощи фильтров

Итак, мы уже умеем вносить нужные нам коррективы в тег head страниц WordPress, изменять заголовки станиц и устанавливать свой значок favicon, при формировании этих самых страниц. В этом рецепте мы сделаем плагин, который будет в конце каждого поста или страницы добавлять ссылку-иконку, которая позволит пользователям отправлять ссылку на текущую страницу по почте своим друзьям.

Этот функционал можно реализовать также путем использования filter хука WordPress, к которому мы привяжем нашу функцию, которая в свою очередь будет получать содержимое поста, и сможет внести в него необходимый код, перед тем как пост попадет на страницу.

Как это сделать...

  1. Перейдите в каталог плагинов WordPress: wp-content/plugins
  2. Создайте новую директорию для плагина под названием email-page-link
  3. Зайдите в директорию плагина и создайте php-файл: email-page-link.php
  4. Откройте ваш новый файл в редакторе кода и добавьте заголовок в верхней части файла плагина:
    /*
        Plugin Name: Plugin Email Page Link
        Plugin URI:
        Description: Этот плагин добавляет Email ссылки в конец страницы.
        Version: 1.0
        Author: Somebody
        Author URI: http://xxxxxx.xx/
        License: GPLv2
    */
    
  5. Иконку email сылки можно поискать здесь:iconarchive.com. Нам понадобится изображение 32х32 пикселя в PNG формате. Сохраните файл иконки в директории плагина: wp-content/plugins/email-page-link под именем mailicon.png
  6. Добавьте следующую строку кода, которая зарегистрирует callback-функцию в filter хуке the_content, который инициализируется, когда WordPress будет подготавливать данные перед их размещением в посте или на странице:
    add_filter( 'the_content', 'email_page_filter' );
    
  7. Далее пропишем реализацию callback-функции:
    function email_page_filter ( $the_content ) {
        // Получаем путь к ресурсу-изображению иконки:
        $mail_icon_url = plugins_url( 'mailicon.png', __FILE__ );
        $new_content   = $the_content;
        $new_content  .= "<a title='E-mail article link'
        href='mailto:someone @somewhere.com?subject=Check out
        this interesting article entitled ";
        // Получаем заголовок текущей страницы/поста:
        $new_content .= get_the_title();
        $new_content .= "&body=Hi!%0A%0AI thought you would enjoy
        this article entitled ";
        $new_content .= get_the_title();
        $new_content .= ".%0A%0A";
        // Получаем постоянную ссылку текущей страницы/поста:
        $new_content .= get_permalink();
        $new_content .= "%0A%0AEnjoy!'><img src='" . $mail_icon_url .
                        "' />Отправить на email</a>";
    
        return $new_content;
    }
    
  8. Сохраните и закройте файл плагина. Больше кода в нем не будет.
  9. Идем в админку нашего WordPress сайта, во вкладку Plugins.
  10. Находим наш плагин в списке и активируем его.
  11. Теперь перейдите на страницу вашего WordPress сайта и обновите её чтобы увидеть что в конце каждого поста или страницы появится иконка со ссылкой "отправить на email". Если теперь кликнуть на ссылку - должен инициироваться ваш email - клиент с функцией "написать письмо".

Как это работает...

Подобно предыдущему рецепту, этот WordPress плагин так же использует функцию add_filter для регистрации нашей callback-функции, которая будет вызвана WordPress - ом, когда он будет подготавливать контент перед тем как отобразить его на странице. Когда вызывается наша функция первое, что мы в ней делаем это создаем e-mail иконку со ссылкой. Функция модифицирует оригинальное содержимое поста, добавляя к нему HTML-код нашей иконки-ссылки.

Подобная техника может использоваться для создания блоков ссылок "Поделиться..." с необходимым JavaScript кодом для того что бы посетители могли делиться ссылками со своими друзьями в социальных сетях.

Как только функция возвращает обработанные данные при помощи инструкции return - WordPress передаст эти данные на вход следующей по очереди callback-функции фильтра (мы же помним, что callback-функции привязанные к одному и тому же фильтру выстраиваются в очередь согласно приоритету, указанному в функции add_filter третьим параметром), что бы та в свою очередь могла внести в него свои изменения и так пока данные не пройдут сквозь весь строй callback-функций фильтра. Что бы в итоге представиться пользователю.

В этом рецепте нами использовались помимо прочего еще парочка полезных утилитарных функций WordPress. Хотя они используются в основном при работе с шаблонами, они могут также использоваться плагинами, чтобы мы могли получить доступ к информации об элементах, содержимое которых обрабатываются в текущий момент:

  • get_the_title(): Получить заголовок поста/страницы
  • get_permalink(): Получить постоянную ссылку на пост/страницу (URL-адрес всегда связан с постом или страницей, даже если, он больше не показывается на на главной странице веб-сайта)

Предыдущие статьи этого цикла:

  1. WordPress: С чего начинаются плагины
  2. WordPress: Добавление контента в тег head страниц
  3. WordPress: Функции для работы с путями
  4. WordPress: Использование хуков фильтров

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


Защитный код
Обновить



Кто на сайте
Сейчас 187 гостей онлайн