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-адрес всегда связан с постом или страницей, даже если, он больше не показывается на на главной странице веб-сайта)

 

Возможно Вас заинтересуют эти материалы

WordPress: Парные шорткоды

Помимо простых шорткодов в WordPress доступны так же парные или охватывающие шорткоды. Используя синтаксис на

WordPress: Шорткоды с параметрами

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

WordPress: Простые шорткоды

Впервые шорткоды стали довольно популярными в WordPress 2.5. Они явились удобным способом предоставить пользователям возможность