Домой WordPress WordPress: Вопросы и ответы Переопределение SEO заголовков произвольного типа записей для разных таксономий
5ответ(ов) в теме
Kerncraft1
не в сети 1 год
На сайте с 18.07.2014
Участник
Тем 30
Сообщения 157
1
22:13

Доброго дня! Пытаюсь решить следующую задачку:

Есть произвольный тип записи "Новость" и есть пользовательская таксономия для этого типа записей. Также установлен плагин SEO by Yoast.

Необходимо переопределить заголовки, которые генерируются плагином SEO. Для разных категорий различные шаблоны формирования title.

Решение: у Yoast есть хук wpseo_title, к которому можно прицепить функцию. Делаю так:

add_filter('wpseo_title', 'new_wpseo_title');
function new_wpseo_title($title) {
    if(  is_singular( 'news') ) {
        $title = get_template_part( 'include/seo', 'title' );
    }
    return $title;
}

Шаблоны вывода пишу в файле include/seo-titl.php

<?php
if ( has_term(array('68','69'), 'news_category') ) {
    echo 'Свой SEO Title 1';
} elseif ( has_term(array('70'), 'news_category') ) {
    echo 'Свой SEO Title 2';
} else {
    echo 'условие не подходит';
}
?>

Проблема: фильтр переписывает title от плагина yoast, но в результате заголовок получается "стандартный" (Постнэйм - Сайтнэйм), а мой заголовок становиться прямиком перед тегом (см. скриншот -

Вы не можете просматривать опубликованные ссылки

).

0
Kerncraft1
не в сети 1 год
На сайте с 18.07.2014
Участник
Тем 30
Сообщения 157
2
16:24

Вот я вроде начал понимать, что echo тут совсем не нужно. Однако моих познаний не хватает, чтобы понять как записать в переменную $title результат проверки условий в файле include/seo-titl.php

0
Вова (Otshelnik-Fm)
не в сети 15 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
3
16:32

вместо echo написать return

1
Kerncraft1
не в сети 1 год
На сайте с 18.07.2014
Участник
Тем 30
Сообщения 157
4
17:34

Не пойму. Вроде title от плагина yoast затирается, но вместо моего вывода выводиться дефолтный (postname | sitename).

0
Kerncraft1
не в сети 1 год
На сайте с 18.07.2014
Участник
Тем 30
Сообщения 157
5
17:47

Ура товарищи. С горем-пополам разобрался)

add_filter('wpseo_title ', 'new_title_filter', 10 );

function new_title_filter($title) {
	if ( is_singular() && has_term(array(68,69), 'news_category') ) {
		$title = "Заголовок записи которая находится в термине 68 или 69 у таксономии news_category";
	}

	return $title;
}

Вот таким макаром работает. Условия тогда тут же и буду прописывать.

0
Вы не имеете права на публикацию сообщений в этой теме