Kianl
@Kianl
Печальный веб-разработчик

Как переопределить заголовок title поверх плагинов?

Привет ребята.

Мне надо переопределить заголовок некоторых таксономий поверх плагина All in Seo Pack, но ни один хук с ним не работает. Избавиться от плагина не вариант, он нужен.

Пробовал фильтры.

pre_get_document_title - не работает, так как если принимаемое значение не пустое, он его не модифицирует.
document_title_parts - по-моему та же фигня. и не помогают никакие приоритеты, хоть ты 999999999999999999999 влепи ему.

Есть идеи, заставить заголовок поменяться, не вырубая плагин?

ЗЫ: Я придумал сделать свой макрос (типа %my_macros%) и влепить его в настройки All in Seo Pack. Это было бы очень удобное и элегантное решение. Просто заходишь и пишешь шаблон: %category_title% - %my_macros% - %my_macros2% и так далее. Но полистав выдачу гугла (в т.ч. и на англ.), я вижу, что это либо невозможно сделать, не влезая в ядро WP или в исходники самого плагина, либо инфы об этом просто нет. Не знаете, возможно такое реализовать?
  • Вопрос задан
  • 392 просмотра
Решения вопроса 1
Kianl
@Kianl Автор вопроса
Печальный веб-разработчик
Короче, как всегда сам решил проблему. Смотрите, че придумал.

Поскольку title обеспечивается add_theme_support('title-tag'); , то его нужно отключить. Но сделать это нужно в определенный момент - когда WP еще не вписал заголовок title в head, но после того, как становится известна текущая страница (начинают работать функция is_tax() и ей подобные).

Я немного поковырялся и нашел в документации хронологию событий ВП: https://codex.wordpress.org/Plugin_API/Action_Reference

Для решения вопроса нужно событие parse_query.

// Проверяем страницу и удаляем поддержку title-tag
add_filter('parse_query', 'my_theme_remove_title_tag', 999, 1);
function my_theme_remove_title_tag() {
	if(is_post_type_archive() || is_tax()) {
		remove_theme_support('title-tag');
	}
}

// А теперь просто строим нужный нам заголовок и выводим его в <head>
add_filter('wp_head', 'my_theme_custom_title', 999, 1);
function my_theme_custom_title(){
	// Тут что-то делаем с заголовком....
	if(is_post_type_archive()) {
		$title = 'Это будет заголовок архива!';
	}
       
	// А тут его выводим
	echo '<title>' . $title . '</title>';
}

Таким образом изменяется заголовок только нужных страниц поверх плагинов (по крайней мере поверх All in SEO Pack), а на остальных остается нетронутым. По-моему очень круто получилось!

Может кому пригодится :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Вообще, помоему, у плагина all in one seo есть фильтры , которые позволяют переопределить выводимый текст.
Сейчас не у компа, посмотреть не могу. Но я делал функции вывода title и description для категорий товаров woocommerce, которые доступны в pro версии плагина.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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