WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Рекомендуемые продукты со скидкой от Template Monster

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 предупреждение, что не указан обязательный параметр.

Список изменений

С версии 0.71 Введена.

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

get_the_title()
the_title
WP_Customize_Nav_Menu_Item_Setting::get_original_title()
the_title
do_trackbacks()
the_title
Walker_Nav_Menu::start_el()
the_title
Walker_Page::start_el()
the_title
wp_get_archives()
the_title
wp_setup_nav_menu_item()
the_title
get_adjacent_post_link()
the_title
previous_post()
the_title
next_post()
the_title
get_boundary_post_rel_link()
the_title
get_parent_post_rel_link()
the_title
Walker_Nav_Menu_Checklist::start_el()
the_title
WP_Posts_List_Table::column_title()
the_title
wp-includes/post-template.php 165
return apply_filters( 'the_title', $title, $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/comment.php 2689
$post_title = apply_filters( 'the_title', $post->post_title, $post->ID );
wp-includes/class-walker-nav-menu.php 213
$title = apply_filters( 'the_title', $item->title, $item->ID );
wp-includes/class-walker-page.php 197
apply_filters( 'the_title', $page->post_title, $page->ID ),
wp-includes/general-template.php 2000
$text = strip_tags( apply_filters( 'the_title', $result->post_title, $result->ID ) );
wp-includes/nav-menu.php 825
$original_title = apply_filters( 'the_title', $original_object->post_title, $original_object->ID );
wp-includes/link-template.php 2134
$title = apply_filters( 'the_title', $title, $post->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/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-admin/includes/class-walker-nav-menu-checklist.php 96
$title = apply_filters( 'the_title', $item->post_title, $item->ID );
wp-admin/includes/class-wp-posts-list-table.php 982
$parent_name = apply_filters( 'the_title', $parent->post_title, $parent->ID );

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

wp-admin/includes/class-wp-media-list-table.php 624
add_filter( 'the_title', 'esc_html' );
wp-admin/includes/class-wp-posts-list-table.php 708
add_filter( 'the_title', 'esc_html' );
wp-includes/default-filters.php 142
add_filter( $filter, 'capital_P_dangit', 11 );
wp-includes/default-filters.php 168
add_filter( 'the_title', 'wptexturize' );
wp-includes/default-filters.php 169
add_filter( 'the_title', 'convert_chars' );
wp-includes/default-filters.php 170
add_filter( 'the_title', 'trim' );
4 коммента
  • WPShop5 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.8 года назад #
    • WPShop5 wpshop.ru

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

      1
      Ответить3.8 года назад #
  • Евгений amfus.ru

    Привет!
    Подскажи пожалуйста, как решить эту проблему?
    Я переношу сверстанный шаблон на бустрап. Но не получается сделать динамический контент в статичных блоках.

    В общем я у меня такой код "

    <div class="bg-one align-items-center d-flex" style="">
      <div class="container mt-5 mb-5">
    	<div class="row mt-5">
    	  <div class="col-md-12" style="">
    		<div class="row">
    		  <div class="col-md-5">
    			<div class="row">
    			  <div class="col-md-12"></div>
    			</div>
    		  </div>
    		  <div class="post-box col-md-7 p-4 pb-5" style="">
    			<a class="post-title" href="<?php the_permalink(); ?>"><h2 class="post-title display-3 text-primary mx-4 mt-4 mb-4" style=""><?php the_title(); ?></h2></a>
    			<div class="post-info lead text-info m-4 mb-4"><?php the_excerpt(); ?></div>
    			<a class="link-read mx-4" href="<?php the_permalink(); ?>">ДАЛЕЕ <img src="<?php echo get_stylesheet_directory_uri() ?>/img/Shape_12.png" class="ml-3"></a>
    		  </div>
    		</div>
    	  </div>
    	</div>
      </div>
    </div>
    <div class="bg-two align-items-center d-flex">
      <div class="container mt-5">
    	<div class="row mt-5">
    	  <div class="post-box col-md-7 p-4 pb-5" style="">
    		<a class="post-title" href="<?php the_permalink(); ?>"><h2 class="post-title display-3 text-primary mx-4 mt-4 mb-4" style=""><?php the_title(); ?></h2></a>
    		<div class="post-info lead text-info m-4 mb-4" style=""><?php the_excerpt(); ?></div>
    		<a class="link-read mx-4" href="<?php the_permalink(); ?>">ДАЛЕЕ <img src="<?php echo get_stylesheet_directory_uri() ?>/img/Shape_12.png" class="ml-3"></a>
    	  </div>
    	  <div class="px-md-1 col-md-5" style=""></div>
    	</div>
      </div>
    </div>

    Один блок справа, другой слева отображается. Но проблема в том, что я получаю один и тот же заголовок, описание и ссылку на статью в обеих блоках. Как вывести разные, например 2 последних поста с блога?

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