Intereting Posts
Удалить крючок действия в классе скрыть что-то на одной странице, если у текущего автора есть только одно сообщение Тематический независимый плагин с использованием шаблона по умолчанию Удаление ярлыка «WordPress» из строки заголовка Применить функцию к update_option Variable Вложенный список do_action Динамически добавлять CSS в визуальный редактор wp_deregister_style с переменной md5? Удаление полей из Media Uploader / Gallery Загрузка шаблонов отдельно в Настройщике Сайт имеет поддельных пользователей, зарегистрированных с похожим шаблоном в имени пользователя и электронной почте Как проверить, находится ли пользователь в определенной роли? Как установить определенный размер для моего изображения? получить список сообщений из пользовательской таксономии Почему абстрагирование html из кода плагина приводит к потере доступа к функциям wordpress?

Передача сохраненных переменных в add_filter

Я работаю над сайтом, где названия страниц генерируются динамически из внешних источников данных. Очевидно, 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 для решений, но я подумал, что это может быть так просто. Я здесь что-то не так?

Solutions Collecting From Web of "Передача сохраненных переменных в add_filter"

Наиболее очевидной причиной может быть тот факт, wpseo_title фильтр wpseo_title до того, как вы сохранили свой заголовок. Попробуйте переместить title_storage() на более ранний этап. Действие wp должно быть хорошим кандидатом.

Как и рекомендовал Златев, я попытался получить мои данные раньше и подключиться к плагину Yoast SEO раньше.

Это сработало для меня. Пришлось написать три новые функции для получения желаемых данных из моего внешнего источника данных, но теперь у меня больше нет проблем с настройкой заголовка, открытым графическим изображением и т. Д.

Извлеченные уроки: Напишите функции (wrapper), чтобы ваши данные были готовы, когда вам это нужно.