Depuis WP4.1, il existe une nouvelle fonctionnalité de thème 'title-tag' permettant d'ajouter la balise de titre. Je lis un article ici pour ajouter itemprop à la balise <title>
afin qu'il ressemble à ceci: <title itemprop="name"><?php wp_title(''); ?></title>
mais en utilisant cette nouvelle fonctionnalité de thème, le titre La balise est ajoutée automatiquement à l'en-tête.
Je me demande quel est le meilleur moyen d’ajouter itemprop à <title>
lors de l’utilisation de add_theme_support('title-tag')
, étant donné que le titre n’est plus écrit manuellement dans le fichier header.php?
Merci!
Si votre thème utilise add_theme_support('title-tag')
, vous pouvez essayer les solutions suivantes:
remove_action( 'wp_head', '_wp_render_title_tag', 1 );
et puis juste accrocher dans votre propre version modifiée:
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' )
);
}
}
avec la balise title contenant l'attribut itemprop
.
Remarque : La current_theme_supports( 'title-tag' )
utilise debug_backtrace()
pour vérifier si elle a été appelée dans les fonctions _wp_render_title_tag()
ou 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;
}
}
Notez également que si nous aurions utilisé:
add_action( 'after_setup_theme', function() {
remove_theme_support( 'title-tag' );
}, 11 );
qui équivaut à:
global $_wp_theme_features;
unset( $_wp_theme_features['title-tag'] );
alors la partie suivante de wp_title()
serait exclue:
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 ) );
}
}
La balise title pourrait par conséquent devenir vide sur la page de couverture, par exemple.