私はwp_title()
を使用して自分のページの見出しを作成しようとしていますが、静的フロントページを使用しています。他のすべてのページではタイトルが正しくレンダリングされますが、フロントページは正しく表示されません。
これは私が働いているものです:
<div id="main-content">
<h1><?php wp_title("", true); ?></h1>
<?php while( have_posts() ) : the_post() ?>
<div class="pagecontent">
<?php the_content(); ?>
</div>
<?php endwhile ?>
</div>
最初はフロントページがindex.php
から描画される可能性があると思ったので、そこに同じコードスニペットを追加しました - しかし、そのような運がない、同じことがレンダリングされます - 空のh1
タグ。
何が起きてる?ページのタイトルをh1タグに表示します。
タイトルを出力するためのものではありません。 the_title() 、または get_the_title() を使用します。
wp_title()
のソースを見ると、静的フロントページ用に計画された出力がないことがわかります。
@Chris_Oが示すように、ビジュアル出力にはthe_title()
を使用してください。しかし、<head>
セクションのタイトルの場合、wp_title()
をフィルタリングし、空の場合はそれを入力する必要があります。
サンプルコード( GitHubからのダウンロード ):
// Hook in very late, let the theme fix it first.
add_filter( 'wp_title', 't5_fill_static_front_page_title', 100 );
/**
* Fill empty front page title if a static page is set.
*
* @wp-hook wp_title
* @param string $title Existing title
* @return string
*/
function t5_fill_static_front_page_title( $title )
{
// another filter may have fixed this already.
if ( '' !== $title or ! is_page() or ! is_front_page() )
{
return $title;
}
$page_id = get_option( 'page_on_front' );
$page = get_page( $page_id );
if ( ! $page or '' === $page->post_title )
{
$title = get_option( 'blogname' );
}
else
{
$title = $page->post_title;
}
// We don’t know if there is any output after the title, so we cannot just
// add the separator. We use an empty space instead.
return "$title ";
}