@sergeyviktorovich

Как называется хук в seo yast, который получает мета из админки или который добавляет мета на страницу?

у меня на сайте много язычность сделана плагином ,но он плохо работает с сео еаст ,хотел в тайл вставить шорт код [en]текст en [/en][de]текст de [/de] который в зависимости от локали выводит нужную версию , пока в мета попадает все включая сам шорт код ,поэтому хотел подключиться к и вызвать do_shortcode($content) ,чтобы вывелась правильная версия

нашел add_filter ( 'wpseo_title' , но меняет тайл , а og:title не меняет его меняет
add_filter( 'wpseo_twitter_title' ,но хотел сразу заменить везде
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Немного лирики: я довольно долго бодаюсь с yoast и, к сожалению, дока и качество исходников оставляют желать лучшего, к тому же они могут их переписывать — сегодня у вас данные в одной таблице лежат, а завтра уже в другой. К тому же, у них просто невероятное количество кода, как для плагина который просто выводит десяток мета-тегов. Надеюсь в обозримом будущем SEO добавят в ядро и я смогу отказаться от этого недоразумения)

Ближе к делу: перебирая разные варианты работы с yoast я в конце концов остановился на том, что при установке меняю все поля "SEO-заголовок" и "Мета-описание" в разделе "Отображение в поисковой выдаче" на %%InsteadTitle%% и %%InsteadDescription%%

После чего подключаю свой файл в тему, где создаю эти переменные и собираю их так, как мне нужно — чаще всего заголовки и описания берутся из excel или лежат в пост-мете (даты проведения мероприятия, характеристики товара). Болванка выглядит так:

// Заголовки
function get_seo_instead_title() {

	$string = '';

	if ( is_archive() ) {
		// берем сео-заголовки из excel-таблицы
	}

	if ( is_single() ) {
		// собираем сео-заголовки из get_the_title() и get_post_meta()
	}


	if ( $string == '' ) {
		if ( is_home() || is_front_page() ) {
			$string = get_bloginfo( 'name' ) . ' — ' . get_bloginfo( 'description' );
		} elseif ( is_post_type_archive() ) {
			$string = get_queried_object()->label;
		} elseif ( is_archive() ) {
			$string = get_queried_object()->name;
		} else {
			$string = get_the_title();
		}
	}

	return $string;

}


// Описания
function get_seo_instead_description() {

	$string = '';

	if ( is_single() ) $string = get_the_excerpt();

	if ( $string == '' ) {
		$string = 'Какое-то дефолтное описание для всех страниц, если его нет';
	}

	return $string;

}

// Регистрируем переменные
function register_custom_yoast_variables() {
	wpseo_register_var_replacement( '%%InsteadTitle%%', 'get_seo_instead_title', 'advanced', 'Some instead title text' );
	wpseo_register_var_replacement( '%%InsteadDescription%%', 'get_seo_instead_description', 'advanced', 'Some instead title text' );
}

// Add action
add_action('wpseo_register_extra_replacements', 'register_custom_yoast_variables');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы