WordPress как на ладони
WordPress темы и плагины за 250 рублей wordpress jino

Переопределение SEO заголовков плагина Yoast в некоторых категориях

Необходимо переопределить заголовки записей некоторых таксономий по имеющемуся шаблону. Что-то вроде: такса id 69 - один шаблон, id 70 - другой.

Подскажите как можно это реализовать.

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

function myy_title_filter($title) {
	if ( has_term(array('68','69'), 'news_category') ) {
		echo "Тест вывода 1";
	} elseif ( has_term(array('70'), 'news_category') ) {
		echo "Тест вывода 2";
	} else {
		echo "условие не подходит";
	}

	return $title;
}

Пытаюсь с помощью фильтра поменять, но не получается.

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

Условия проверки поместил в файл include/seo-titl.php

В итоге в исходном коде страницы: Свой SEO Title<title>Тестовая новость</title>

Заметки к вопросу:
Kama 28 дней назад

Тебе в этом фильтре нужно вернуть значение, а не выводить его на экран! Т.е. не echo нужно использовать, а менять $title.

get_template_part() что там внутри, зачем так сложно? Напиши как в первом варианте:

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

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

	return $title;
}
Webseodj 28 дней назад

get_template_part() - там будет проверка на вхождение поста в определенные категории и разные шаблоны вывода заголовка (довольно большой список, поэтому вынес в отдельный файл).

<?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 результат обработки и вывода вышенаписанного условия?

Webseodj 28 дней назад
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;
}

Спасибо огромное! Работает.

Webseodj 28 дней назад

Еще один вопрос, если позволите: я планирую создавать различные шаблоны для разных рубрик. В некоторых необходимо включать название записи. Пример: Заголовок записи "POSTNAME" которая находится в термине 68 или 69 у таксономии news_category.

Как можно добавить название текущей записи в код: $title = "Заголовок записи которая находится в термине 68 или 69 у таксономии news_category";

Webseodj 28 дней назад

Разобрался. $title переименовал в $mytitle, а в return вставил:
$mytitle = 'Какой-то текст ' . $title . ' еще какой-то текст';

Еще раз спасибо!

Kama 27 дней назад

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

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

и вместо

$title = "Заголовок записи которая находится в термине 68 или 69 у таксономии news_category";

юзаешь

$title = my_title();
0
29 дней назад

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация