Я работаю над сайтом, где названия страниц генерируются динамически из внешних источников данных. Очевидно, Yoast SEO / WordPress SEO ничего не знает о правильном названии, описании, изображении и т. Д. В голове, когда он выводит теги OpenGraph и многое другое.
На данный момент это не проблема, так как WordPress SEO поддерживает фильтры для подключения к выходу. Вы можете найти их в этом списке .
Фильтры должны войти в functions.php
, мне нужно передать свои сгенерированные данные, а затем крючки сделают свою магию. Поскольку я не могу использовать переменные в add_filter()
мне нужно немного обойти.
Я уже использую этот метод, описанный toscho для сохранения данных в статических переменных, поэтому я могу получить к ним доступ со всего WordPress. (Это отлично работает для всего, кроме моих фильтров.)
Поэтому мой шаблон страницы вызывает
$saved = title_storage($event_title);
для сохранения динамически созданного заголовка страницы в статическую переменную для последующего использования.
В моих functions.php
я получил следующее:
function seo_change_title( $string ) { $string = title_storage(); return $string; } add_filter( 'wpseo_title', 'seo_change_title', 10, 1 );
Очевидно, это не работает. title
отделяется от тегов OpenGraph, но это все, что меняется. Хотя это, вероятно, означает, что моя переменная пуста.
Попытка разобраться с анонимными функциями и поисками WPSE для решений, но я подумал, что это может быть так просто. Я здесь что-то не так?
Наиболее очевидной причиной может быть тот факт, wpseo_title
фильтр wpseo_title
до того, как вы сохранили свой заголовок. Попробуйте переместить title_storage()
на более ранний этап. Действие wp
должно быть хорошим кандидатом.
Как и рекомендовал Златев, я попытался получить мои данные раньше и подключиться к плагину Yoast SEO раньше.
Это сработало для меня. Пришлось написать три новые функции для получения желаемых данных из моего внешнего источника данных, но теперь у меня больше нет проблем с настройкой заголовка, открытым графическим изображением и т. Д.
Извлеченные уроки: Напишите функции (wrapper), чтобы ваши данные были готовы, когда вам это нужно.