Как добавить любую переменную в сниппет Yoast SEO

Пользу WordPress-плагина Yoast SEO сложно переоценить. Одной из важнейших функций для СЕОшников является автоматическая шаблонная генерация мета-информации для Title и Description. Мы можем составить тайтл или дескрипшн из конструктора, подставляя простые переменные, и это круто.

Однако, разумеется, возникают случаи, когда готовых переменных явно недостаточно. Сейчас мы рассмотрим пример, как добавить свою — любую! — информацию в список переменных шаблона мета-данных Yoast. В результате получится что-то вроде такого:

Предположим, мы хотим использовать переменную myname в сниппетах (вставлять её будем как и все остальные: %%myname%%). Как всегда, редактируем functions.php нашей темы. Вставляем такой код:

Давайте разбираться.

  1. Функция get_myname возвращает то, что мы хотим получить вместо переменной в тайтле и/или дескрипшне.
  2. Функция register_custom_yoast_variables является, грубо говоря, функцией-контейнером для помещения наших функций-замен в хук.
  3. Внутри этой функции мы вызываем Yoast-овую функцию wpseo_register_var_replacement, которая принимает 4 аргумента:
    1. название переменной в шаблоне;
    2. функцию, которая возвращает необходимое значение переменной (либо название функции, как у меня в примере, либо анонимная функция);
    3. тип отображения, пусть будет advanced по рекомендации Yoast;
    4. описание переменной, которое показывается при нажатии «Нужна помощь?» во вкладке «Переменные сниппета».
  4. Обращу внимание, что если необходимо несколько переменных, мы просто копи-пастим функцию wpseo_register_var_replacement столько раз, сколько необходимо, подставляя ей новые значения.
  5. Цепляем функцию через стандартный add_action к хуку, который любезно предоставил Yoast.

И вот результат — Yoast увидел нашу переменную, она отображается в контенте!



Игорь Балькин
Автор: Игорь Балькин. Веб-разработчик с 2001 года. Разработчик сайтов на WordPress, CRM и веб-приложений. Минск, Беларусь. Контактная информация.

4 комментария к записи “Как добавить любую переменную в сниппет Yoast SEO”

  • Олег пишет:

    Доброго дня, в премиум тур-теме есть произвольное поле tourmaster-tour-price которое должно отобразить цену тура. Я пытался его добавить в yoast что бы вывести в титле… Не заработало
    function get_myname() {
    /* здесь наша бизнес-логика */
    $return = ‘Этот текст отобразится в title и meta description!’;
    return $return;
    }
    function register_custom_yoast_variables() {
    wpseo_register_var_replacement(‘%%tourmaster-tour-price%%’, ‘get_myname’, ‘advanced’, ‘Этот пояснительный текст отобразится в списке Переменные сниппета’);
    }
    add_action(‘wpseo_register_extra_replacements’, ‘register_custom_yoast_variables’);

    • Игорь пишет:

      Нужно править функцию get_myname, чтобы она возвращала значение мета-переменной tourmaster-tour-price

      Навскидку код функции будет такой:
      function get_myname() {
      global $post;
      return get_post_meta($post->ID,’tourmaster-tour-price’);
      }

    • Игорь пишет:

      Или возможно Yoast сам подхватит нужное мета-значение. Попробуйте просто вставить в шаблон %%cf_tourmaster-tour-price%%

Прокомментировать

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

Можно использовать HTML-тэги и атрибуты:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>