Я использую статическую главную страницу и страницу для своих блог-страниц. В моем header.php я хочу отобразить заголовок выбранной страницы моих блог-страниц.
Например:
<?php if( is_home() ) echo '<h1>' . get_the_title() . '</h1>'; ?><nav> ... </nav>
Но, конечно, get_the_title()
возвращает первый элемент отображаемых сообщений, а не самой страницы.
Как я могу отобразить заголовок назначенной домашней страницы?
Вы можете использовать запрошенный объект, чтобы вернуть заголовок страницы, используемой в качестве страницы блога.
Вы можете использовать следующее: ( Требовать PHP 5.4+ )
$title = get_queried_object()->post_title; var_dump( $title );
Вы можете получить идентификатор из параметров, а затем повторить заголовок, используя этот идентификатор.
// Blog Page $page_for_posts_id = get_option( 'page_for_posts' ); echo get_the_title($page_for_posts_id); // Front Page $frontpage_id = get_option('page_on_front'); echo get_the_title($frontpage_id);
Заметка для тех, кто думает об использовании решения @ pieter на index.php – На index.php, вы захотите проверить, что статическая страница настроена на показ сообщений в настройках> Чтение. is_home()
не работает на index.php, поэтому вам нужно проверить, что параметр установлен:
<?php // See if "posts page" is set in Settings > Reading $page_for_posts = get_option( 'page_for_posts' ); if ($page_for_posts) { ?> <header class="page-header"> <h1 class="page-title" itemprop="headline"> <?php echo get_queried_object()->post_title; ?> </h1> </header> <?php } ?>
Эта проверка важна, потому что index.php также вызывается, когда установлено «Front Page Displays> Your latest posts». В этом случае get_queried_object()->post_title;
вернет ошибку, не найденную объектом.
Если речь идет только о домашней странице, почему бы вам не записать код?
<?php if ( is_home() ) : ?> <h1>Your blog posts page title</h1> <?php endif; ?>