WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

the_title хук-фильтр . WP 1.2.1

Применяется к заголовку записи, перед тем как вывести заголовок на экран. Используется в функции the_title().

В некоторых случаях, например когда используется функция the_title(), заголовок можно удалить, вернув пустое значение в фильтре (NULL, FALSE или '').

Использование

add_filter( 'the_title', 'filter_function_name_11', 10, 2 );
function filter_function_name_11( $title, $id ) {
	// Фильтр...

	return $title;
}
$title(строка)
Заголовок записи.
$id(число)
ID записи.

Примеры

#1 Добавим слово "Страница" к заголовку постоянных страниц:

Демонстрация работы фильтра:

add_filter( 'the_title', 'add_text_to_page_title' );
function add_text_to_page_title( $title ) {
	if( is_page() )
		$title = 'Страница: '. $title;

	return $title;
}

В результате заголовок всех постоянных страниц будет выглядеть так: Страница: Заголовок страницы.

#2 Удаление заголовков в категории

В этом примере показано, как удалить заголовки у записей, которые находятся в категории "reklama":

function suppress_if_blurb( $title, $id = null ) {

	if ( in_category('reklama', $id ) ){
		return '';
	}

	return $title;
}
add_filter( 'the_title', 'suppress_if_blurb', 10, 2 );

Дополнительный параметр $id = null, значение по умолчанию для второго параметра, указан потому что, некоторые вызовы функции могут не передавать этот параметр. Эта ошибка появилась в версии 3.1 и была исправлена в версии 3.3. Если нужна обратная совместимость с версиями 3.1-3.3, то нужно указать значение по умолчанию для $id, иначе вы получите PHP предупреждение, что не указан обязательный параметр.

Где вызывается хук

get_the_title()
Walker_Nav_Menu_Checklist::start_el()
previous_post()
next_post()
Walker_Page::start_el()
Walker_Nav_Menu::start_el()
WP_Customize_Nav_Menu_Item_Setting::get_original_title()
wp_setup_nav_menu_item()
WP_Posts_List_Table::column_title()
wp_get_archives()
get_adjacent_post_link()
do_trackbacks()
get_boundary_post_rel_link()
get_parent_post_rel_link()
wp-includes/post-template.php 158
return apply_filters( 'the_title', $title, $id );
wp-admin/includes/class-walker-nav-menu-checklist.php 96
$title = apply_filters( 'the_title', $item->post_title, $item->ID );
wp-includes/deprecated.php 151
$string .= apply_filters('the_title', $post->post_title, $post->ID);
wp-includes/deprecated.php 186
$string .= apply_filters('the_title', $post->post_title, $post->ID);
wp-includes/class-walker-page.php 192
apply_filters( 'the_title', $page->post_title, $page->ID ),
wp-includes/class-walker-nav-menu.php 204
$title = apply_filters( 'the_title', $item->title, $item->ID );
wp-includes/customize/class-wp-customize-nav-menu-item-setting.php 274
$original_title = apply_filters( 'the_title', $original_object->post_title, $original_object->ID );
wp-includes/nav-menu.php 780
$original_title = apply_filters( 'the_title', $original_object->post_title, $original_object->ID );
wp-admin/includes/class-wp-posts-list-table.php 890
$parent_name = apply_filters( 'the_title', $parent->post_title, $parent->ID );
wp-includes/general-template.php 1881
$text = strip_tags( apply_filters( 'the_title', $result->post_title, $result->ID ) );
wp-includes/link-template.php 2026
$title = apply_filters( 'the_title', $title, $post->ID );
wp-includes/comment.php 2543
$post_title = apply_filters( 'the_title', $post->post_title, $post->ID );
wp-includes/deprecated.php 2689
$title = apply_filters('the_title', $title, $post->ID);
wp-includes/deprecated.php 2764
$title = apply_filters('the_title', $title, $post->ID);

Где используется хук (в ядре WP)

wp-includes/default-filters.php 155
add_filter( 'the_title', 'wptexturize' );
wp-includes/default-filters.php 156
add_filter( 'the_title', 'convert_chars' );
wp-includes/default-filters.php 157
add_filter( 'the_title', 'trim' );
wp-admin/includes/class-wp-media-list-table.php 607
add_filter( 'the_title','esc_html' );
wp-admin/includes/class-wp-posts-list-table.php 636
add_filter( 'the_title', 'esc_html' );
wp-includes/default-filters.php 130
add_filter( $filter, 'capital_P_dangit', 11 );
3 коммента
  • WPShop4 cайт: wpshop.ru

    при использовании хука может возникнуть проблема с изменением названий меню.
    например:

    function add_text_to_page_title( $title ) {
    	if( is_page() )
    		$title = 'Новая страница';
    
    	return $title;
    }
    add_filter( 'the_title', 'add_text_to_page_title' );

    Заменяет все названия пунктов меню на Новая страница. Чтобы этого не случалось - добавим global $id; и проверим существует ли он в нашей ф-ции (это как раз второй параметр $id):

    function add_text_to_page_title( $title ) {
    	global $id;
    	if( is_page() && $id )
    		$title = 'Новая страница';
    
    	return $title;
    }
    add_filter( 'the_title', 'add_text_to_page_title' );

    Проблема решена.

    4
    Ответить3 года назад #
    • WPShop4 cайт: wpshop.ru

      Еще вариант нашел — добавить в условие in_the_loop(), а не $id. Так даже правильнее будет.

      1
      Ответить3 года назад #
Здравствуйте, !     Войти . Зарегистрироваться