web-dev-qa-db-ja.com

WP4.1タイトルタグへのschema.org itempropの追加

WP4.1以降、titleタグを追加するための新しい 'title-tag' テーマ機能があります。この記事のように こちら を読んで、itempropを<title>タグに追加します。<title itemprop="name"><?php wp_title(''); ?></title>ですが、この新しいテーマ機能を使ってタグは自動的にヘッダに追加されます。

add_theme_support('title-tag')を使うときにitempropを<title>に追加するための最善の方法は何でしょうか。タイトルがもうheader.phpファイルに手動で書かれていないことを考えると?

ありがとうございます。

1
Billy

あなたのテーマがadd_theme_support('title-tag')を使っているなら、あなたは以下を試すことができます:

remove_action( 'wp_head', '_wp_render_title_tag', 1 );

そして、あなた自身の修正バージョンをフックするだけです:

add_action( 'wp_head', 'wpse_render_title_tag_with_itemprop', 1 );

function wpse_render_title_tag_with_itemprop() {

    if ( did_action( 'wp_head' ) || doing_action( 'wp_head' ) ) 
    {     
        printf( 
            '<title itemprop="name">%s</title>' . PHP_EOL, 
             wp_title( '|', false, 'right' )
        );
    }
}

itemprop属性を含むtitleタグ付き。

current_theme_supports( 'title-tag' )は、debug_backtrace()または_wp_render_title_tag()関数内で呼び出されたかどうかを確認するためにwp_title()を使用しています。

if ( 'title-tag' == $feature ) {
    // Don't confirm support unless called internally.
    $trace = debug_backtrace();
    if ( ! in_array( $trace[1]['function'], array( '_wp_render_title_tag', 'wp_title' ) ) ) {
        return false;
    }
 }

また、使用したとします。

add_action( 'after_setup_theme', function() {
        remove_theme_support( 'title-tag' );
}, 11 );

これは以下と同等です。

global $_wp_theme_features;
unset( $_wp_theme_features['title-tag'] );

その場合、wp_title()の次の部分は除外されます。

if ( current_theme_supports( 'title-tag' ) && ! is_feed() ) {
    $title .= get_bloginfo( 'name', 'display' );

    $site_description = get_bloginfo( 'description', 'display' );
    if ( $site_description && ( is_home() || is_front_page() ) ) {
        $title .= " $sep $site_description";
    }

    if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
        $title .= " $sep " . sprintf( __( 'Page %s' ), max( $paged, $page ) );
    }
}

そのため、たとえばフロントページでtitleタグが空になる可能性があります。

2
birgire