В вордпрессе есть такая функция wp_head(), выводящая данные в раздел head. Так вот, эта функция выводит и title meta-description. А что если надо создать отдельный шаблон вывода мета для отдельной рубрики, и не хочется переделывать весь сайт чтоб шаблон можно было задавать плагином Yoast SEO, который успешно с этим справляется, только надо вынести рубрику в отдельный тип записи.
Для этого воспользуемся перехватом вывода данных функции wp_head(), тоесть запретим ей вывод и результат направим в буфер обмена, а потом из буфера обмена в функцию по обработке результата.
Вывод wp_head помещаем в буфер и обрабатываем функцией
<?php
global $rain_url;
$rain_url = $_SERVER['REQUEST_URI'];
global $category_id;
$categories = get_the_category();
$category_id = $categories[0]->cat_ID;
global $title_;
$title_ = esc_html(get_the_title());
function rain_head($buffer)
{
global $category_id;
global $title_;
global $rain_url;
if (($category_id == 20)&&(strpos($rain_url, '/category/vrachi/') === false)){
$x1 = strpos($buffer, '<title>');
$x2 = strpos($buffer, '</title>');
$old_title = substr($buffer, $x1, $x2+8);
$new_title = '<title>Врач - '.$title_.' (из Германии)</title>';
$buffer = str_replace($old_title,$new_title,$buffer);
}
return $buffer;
}
ob_start("rain_head");
wp_head();
ob_end_flush();
?>
Теперь по подробней.
Обворачиваем wp_head() функциями ob_start(«rain_head») и ob_end_flush(), для того чтобы перехватить данные и отправить результат в функцию по обработке результата rain_head().
Шаблон должен применяться ко все записям рубрики, НО не применяться к странице рубрики.
для этого создано условие
if (($category_id == 20)&&(strpos($rain_url, '/category/vrachi/') === false)){
, где
$category_id — проверяем на вхождение записи в оптеделенную рубрику
$rain_url — указываем что урл не должен содержать основную рубрику (это зависит от того как настроен проект, возможно, такого делать и не надо)
Примечание
Данный пример не является аксиомой изменения мета в функции wp_head(), а только как один из десятка вариантов.
Вывод wp_head назначаем переменной
Тут делаем тоже самое, но результат буфера загоняем в переменную
ob_start(); wp_head(); $head = ob_get_clean(); echo $head;
Получив результат работы функции wp_head() в переменной, можно с переменной уже делать что угодно и потом выводить.

