Короче, как всегда сам решил проблему. Смотрите, че придумал.
Поскольку 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), а на остальных остается нетронутым. По-моему очень круто получилось!
Может кому пригодится :)