it-swarm.com.de

Hinzufügen von schema.org itemprop zu WP4.1 Title Tag

Seit WP4.1 gibt es ein neues "title-tag" Theme-Feature, um das Title-Tag hinzuzufügen. Ich lese einen Artikel hier , um itemprop zum <title> -Tag hinzuzufügen, damit es so aussieht: <title itemprop="name"><?php wp_title(''); ?></title>, aber mit dieser neuen Designfunktion, dem Titel Das Tag wird automatisch zur Kopfzeile hinzugefügt.

Ich frage mich, wie ich <title> am besten um itemprop erweitern kann, wenn ich add_theme_support('title-tag') verwende, da der Titel nicht mehr manuell in die Datei header.php geschrieben wird.

Vielen Dank!

1
Billy

Wenn Ihr Thema add_theme_support('title-tag') verwendet, können Sie Folgendes versuchen:

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

und dann haken Sie einfach Ihre eigene modifizierte Version ein:

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' )
        );
    }
}

mit dem title Tag, das das Attribut itemprop enthält.

Hinweis : Die Funktion current_theme_supports( 'title-tag' ) verwendet debug_backtrace(), um zu überprüfen, ob sie in den Funktionen _wp_render_title_tag() oder wp_title() aufgerufen wurde:

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;
    }
 }

Beachten Sie auch, dass, wenn wir verwendet hätten:

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

was äquivalent ist zu:

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

dann wäre der folgende Teil von wp_title() ausgeschlossen:

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 ) );
    }
}

Das title -Tag kann daher beispielsweise auf der Titelseite leer sein.

2
birgire