Функция возвращает заголовок поста, ID которого передан в параметрах, если же ID не указан, возвращается заголовок текущей записи в цикле.
Если запись защищена паролем, то перед заголовком добавляется «Защищено: », меняется хуком protected_title_format если пост помечен как личное, тогда префикс заголовка будет «Личное: », меняется хуком private_title_format.
get_the_title( $post = 0 )
Параметры
- $post
- (целое число|WP_Post) ID или объект поста, заголовок которого нужно получить, по умолчанию — текущий пост в цикле.
Очистка
Важный момент, про который вы должны помнить. Вывод функции get_the_title()
никак не чистится, кроме использования в некоторых местах в админке (об этом ниже), это означает, что если например в заголовок записи вы закинете JavaScript, например <script>alert( 'Привет' );</script>
, то этот код будет выполняться везде, где выводится заголовок.
Поэтому, в зависимости от ситуации, рекомендую вам рассмотреть возможность использования:
echo esc_html( get_the_title() );
либо, если в заголовке могут присутствовать HTML-теги, то:
echo wp_kses_post( get_the_title() );
Пример 1. Как вывести заголовок текущего поста в цикле
При использовании внутри цикла WordPress никакие параметры передавать не нужно:
echo '<h2>' . get_the_title() . '</h2>';
Пример 2. Как вывести заголовок конкретного поста
echo get_the_title( 531 ); // выводим заголовок поста с ID 531
или:
$specific_post = get_post( 531 ); echo get_the_title( $specific_post );
Пример 3. Создаём хлебные крошки с выводом заголовка страницы
echo '<div class="breadcrumb">'; // получаем заголовок родительского поста $parent_title = get_the_title( $post->post_parent ); // если заголовок не равен заголовку текущего поста, то выводим ссылку на родителя if ( $parent_title != the_title( ' ', ' ', false ) ) { echo '<a href="' . esc_url( get_permalink( $post->post_parent ) ) . '" title="' . esc_attr( $parent_title ) . '">' . esc_html( $parent_title ) . '</a> » '; } // и выводим заголовок текущего поста echo get_the_title(); echo '</div>';
the_title
Этот фильтр-хук – основное отличие между выводом заголовка функцией get_the_title()
и выводом напрямую из объекта поста $post->post_title
.
На этот фильтр накладываются некоторые функции, а именно:
Например, ну не знаю, давайте добавим ID поста в конце каждого заголовка в скобочках!
add_filter( 'the_title', 'true_custom_title_stuff', 25, 2 ); function true_custom_title_stuff( $title, $post_id ) { return $title . ' (' . $id . ')'; }
Не знаете, куда вставлять код?
protected_title_format
Позволяет изменить именно шаблон вывода заголовка поста, если запись защищена паролем.
По умолчанию – либо Защищено: %s
для русской локализации, либо Protected: %s
. %s
, как можно догадаться впоследствии заменяется текстом заголовка.
Например можем попробовать сделать такой формат: %s (защищена паролем)
add_filter( 'protected_title_format', 'true_protected_title_format', 25, 2 ); function true_protected_title_format( $format, $post ) { // мы можем использовать тут объект поста $post для каких-то доп. условий return '%s (защищена паролем)'; }
Не знаете, куда вставлять код?
private_title_format
Позволяет изменить именно шаблон вывода заголовка поста, если запись отмечена как «Личное». По умолчанию – либо Личное: %s
для русской локализации, либо Private: %s
.
Поменяем так же, как и в предыдущем примере, но только для страниц:
add_filter( 'private_title_format', 'true_private_title_format', 25, 2 ); function true_private_title_format( $format, $post ) { if( 'page' === get_post_type( $post ) ) { return '%s (личное)'; } return $format; }
А можно и вовсе избавиться от этих надписей:
add_filter( 'private_title_format', 'true_no_private_title_format' ); function true_no_private_title_format( $format ) { return '%s'; }
Не знаете, куда вставлять код?