私はこれをfunctions.php
で使って私のページ<title>
を出力します。
/**
* Creates a nicely formatted and more specific title element text
* for output in head of document, based on current view
*
* @param string $title Default title text for current view
* @param string $sep Optional separator
* @return string Filtered title
*/
function sitename_wp_title( $title, $sep ) {
global $paged, $page;
if ( is_feed() )
return $title;
// Adds the site name
$title .= get_bloginfo( 'name' );
// Adds the site description for the front page
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_front_page() ) )
$title = "$title $sep $site_description";
// Adds a page number if necessary
if ( $paged >= 2 || $page >= 2 )
$title = "$title $sep " . sprintf( __( 'Page %s' ), max( $paged, $page ) );
return $title;
}
add_filter( 'wp_title', 'sitename_wp_title', 10, 2 );
サブページにトップレベルのカテゴリ名を含めたいのですが。
たとえば、現在このサイト構造の場合:
「大」カテゴリの投稿は、次のようなページタイトルを出力します。
<title>$postname | $blog_name</title>
出力は以下のようにします。
<title>$postname | Work | $blog_name</title>
そのため、最上位のカテゴリ名は追加されますが、二次レベルのカテゴリは追加されません(大)。
すべての親カテゴリを取得するためのヘルパー関数を作成します(各投稿は複数のカテゴリに属することができます)。
function parent_cat_names( $sep = '|' )
{
if ( ! is_single() or array() === $categories = get_the_category() )
return '';
$parents = array ();
foreach ( $categories as $category )
{
$parent = end( get_ancestors( $category->term_id, 'category' ) );
if ( ! empty ( $parent ) )
$top = get_category( $parent );
else
$top = $category;
$parents[ $top->term_id ] = $top;
}
return esc_html( join( $sep, wp_list_pluck( $parents, 'name' ) ) );
}
…で親用語を追加
if ( '' !== $parent_cats = parent_cat_names( $sep ) )
$title .= "$parent_cats $sep ";