Intereting Posts
Функция WordPress, например, is_category для подкатегории? is_subcategory? Как сделать видео-игру для главной страницы? получить текущую таксономическую должность с помощью ajax Проверьте значение настраиваемого поля в разных типах сообщений, чем текущий, и сделайте что-нибудь отображать содержимое в нескольких столбцах WordPress Rewrites – Как передать переменную в Custom Post Type? Повторяющаяся проблема с slug / permalink Измените метод класса из child function.php Показать изображение, если опубликовано сообщение Проверьте категорию_имя или таксономия для специального типа сообщений? добавить пользовательский HTML css с js не работает meta_query с несколькими ключами Как я использую термины таксономии на основе терминов, которые они используют вместе? Жесткое обновление стили как автоматически фиксировать формальную форму 7 при входе пользователя в систему

the_title () показывает название первого сообщения вместо заголовка страницы?

Я иногда сталкиваюсь с этой проблемой и не уверен, что ее вызывает, какие-то идеи?

<?php get_header(); ?> <div class="content" role="main"> <h1><?php the_title(); ?></h1> <?php get_template_part( 'loop', 'index' ); ?> </div> <?php get_footer(); ?> 

Для нормальной страницы the_title возвращает «Название страницы».

Но для блога (используя loop.php, как в индексном файле выше) он возвращает «Заголовок первой записи».

Есть идеи?

the_title – это тег Loop. Он «Отображает или возвращает заголовок текущего сообщения», и предполагается, что он используется внутри цикла, а не за его пределами.

То, что вы делаете – вызывая его за пределами Loop – не совсем правильно, и вы получаете непоследовательные результаты. Что происходит, так это:

  1. Переменная $post устанавливается на первое сообщение в Loop в начале загрузки страницы. Для некоторых страниц, таких как страницы с одиночными сообщениями, в которых есть только одна запись в Loop, это означает, что $post – это «страница, на которой вы находитесь» – более или менее. Для архивных страниц это первая страница в Loop. Вы можете поместить var_dump($post); перед wp_head и убедитесь, что переменная уже установлена.
  2. Такие теги, как the_title используют глобальную переменную $post . Вы должны проследить его через пару функций, чтобы добраться туда, но в конце концов вы попадаете в функцию get_post и вы можете видеть в источнике, что это так. В этом случае цепочка – это the_title -> get_the_title -> get_post

Итак, то, что вы описываете, именно то, что должно происходить. Вы неправильно используете тег. Он иногда работает так, как вы хотите, только из-за причуды кода. На самом деле это не должно работать так, как мне кажется.

Если вы хотите, чтобы страница, на которой вы находитесь, вам иногда нужно использовать get_queried_object , но смотрите ее, поскольку она возвращает разные виды данных в зависимости от страницы, а для некоторых страниц возвращает NULL . В других случаях вам лучше использовать is_home , is_category и т. Д., Чем вы в зависимости от данных запроса. На самом деле, в большинстве случаев вам лучше с этими условностями или просто с вызовом wp_title как предлагает toscho, но контекст, который вы пытаетесь использовать, заставляет меня задаться вопросом, правильно ли это. Кроме того, вывод wp_title может быть и часто управляется плагинами (например, плагинами SEO), которые могут или не могут быть тем, что вы хотите.

На страницах архива – блоге, году, категории и т. Д. – используйте wp_title() чтобы получить заголовок страницы. the_title() полагается на данные одного сообщения.

На страницах архива – блоге, году, категории и т. Д. – используйте single_cat_title() чтобы получить заголовок страницы. Надеюсь, это поможет вам

Сегодня просто поразила то же самое, но я нашел отличное решение:

  <?php if ( is_front_page() ) { echo "Home"; } else if (is_single()) { // POST, not needed for my site echo ""; } else if (is_page()) { // PAGE echo get_the_title(); } else if(is_category()) { $arr = get_the_category(); if ( ! empty( $arr ) ) { echo esc_html( $arr[0]->name ); } }