Модернизировать фильтр PHP
Всех приветствую. Есть код фильтра Wordpress, добавляющий слова в заголовки страниц записей. Фильтр работает не до конца правильно, добавляя слова и в другие заголовки постов на странице. Возможно ли исправить фильтр, чтобы он правильно работал? Спасибо!
add_filter( 'the_title', 'add_text_to_page_title' );
function add_text_to_page_title( $title ) {
if ( in_the_loop() && is_single()) {
$title = 'Этот пост про '. $title;
}
return $title;
}
Ответы (2 шт):
Автор решения: Valerii Vasiliev
→ Ссылка
Попробуйте сделать с дополнительной проверкой на main_query
add_action('loop_start', function ($q)
{
if($q->is_main_query()){
add_filter( 'the_title', 'add_text_to_page_title', 10, 2);
} else{
remove_filter('the_title','add_text_to_page_title', 10, 2);
}
});
function add_text_to_page_title( $title ) {
if ( is_single()) {
$title = 'Этот пост про '. $title;
}
return $title;
}
Автор решения: Darth KYL
→ Ссылка
Вы можете проверять на конкретный тип записи, в данном примере это post, если вам нужно другой тип записи вы можете заменить его на необходимый
add_action( 'loop_start', 'add_text_in_main_query' );
function add_text_in_main_query( $query ) {
if ( $query->is_main_query() ) {
add_filter( 'the_title', 'add_text_to_page_title' );
} else {
remove_filter( 'the_title', 'add_text_to_page_title' );
}
}
function add_text_to_page_title( $title ) {
return is_singular( 'post' ) ? 'Этот пост про ' . $title : $title;
}