' Title-tag ' est une fonctionnalité de thème introduite dans la version 4.1, et je souhaite l'utiliser comme titre par défaut de mon thème. Cette fonctionnalité doit être ajoutée à l'action after_setup_theme
ou init
. Il est recommandé ici . L'utilisation de cette fonctionnalité fonctionne parfaitement pour moi. MAIS:
De plus, j'ai une fonction de titres personnalisés qui peut être activée/désactivée à l'aide du framework Option-Tree. Ce cadre est chargé directement dans functions.php
. Ensuite, j'ai le reste des fonctions ajoutées sur le after_setup_theme
avec priorité 2:
add_action( 'after_setup_theme', 'theme_functions', 2);
Et voici le filtre ajouté pour mes titres personnalisés:
add_filter( 'wp_title', 'custom_titles', 10, 2 );
Lorsque je désactive ma fonction custom_titles()
, la nouvelle fonctionnalité title-tag
fonctionne parfaitement, mais lorsque j'active les options personnalisées, le titre est renvoyé deux fois. Exactement ça:
<title>Front page meta title example</title>
Front page meta title example<title></title>
Le premier est correct et utilise la fonction wp_title()
insérée dans le header.php
entre les balises title
, mais le second est inclus à la première ligne de la fonction wp_head()
.
En fait, ma fonction custom_titles()
fonctionnait parfaitement sans l'utilisation de la nouvelle fonctionnalité title-tag
. Il semble donc que le conflit apparaît lorsque j'essaie d'utiliser les deux.
Pensez-vous que ce serait une bonne solution de placer les deux fonctionnalités dans after_theme_setup
priorité 1 dans une instruction conditionnelle simple, ou existe-t-il un meilleur moyen de le faire? Il semble que la solution devrait être plus facile.
UPDATE: C'est fou. Si je supprime les balises title
de l'en-tête pour utiliser la nouvelle fonctionnalité, la vérification du thème renvoie:
REQUIRED: le thème doit avoir des balises, idéalement dans le fichier header.php.
Si je supprime la nouvelle fonctionnalité pour utiliser ma fonction personnalisée, la vérification du thème renvoie:
RECOMMANDÉ: Aucune référence à add_theme_support ("title-tag") n’a été trouvée dans le thème. Il est recommandé que le thème implémente cette fonctionnalité pour WordPress 4.1 et versions ultérieures.
Pour être honnête: LOL. En ajoutant add_theme_support
dans functions.php
, et title
balises dans header.php
lorsqu’elles sont respectivement "RECOMMENDRE" et "REQUIRE", le titre sera toujours renvoyé deux fois!
Votre problème est que vous ne pouvez pas utiliser wp_title()
dans le thème si le thème prend déjà en charge title-tag
. Le <head>
de votre thème devrait ressembler à ceci:
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<?php wp_head(); ?>
</head>
Le support des filtres et des balises de titre:
add_action( 'after_setup_theme', 'theme_functions' );
function theme_functions() {
add_theme_support( 'title-tag' );
}
add_filter( 'wp_title', 'custom_titles', 10, 2 );
function custom_titles( $title, $sep ) {
//Check if custom titles are enabled from your option framework
if ( ot_get_option( 'enable_custom_titles' ) === 'on' ) {
//Some silly example
$title = "Some other title" . $title;;
}
return $title;
}
Si vous faites cela, cela fonctionnera parfaitement.
J'ai trouvé une solution, alors je suis sûr qu'elle sera utile pour les autres.
Explication: Si ma fonction custom_titles()
est activée, chargez-la dans functions.php
sous la priorité after_theme_setup
et affichez les balises title
dans le fichier header.php
.
Dans functions.php:
if ( ot_get_option( 'enable_custom_titles' ) === 'on' ) {
// The custom titles function
}
Dans header.php:
<?php if ( ot_get_option( 'enable_custom_titles' ) === 'on' ) : ?>
<title><?php wp_title( '|', true, 'right' ); ?></title>
<?php endif; ?>
<!-- The next will return the new WP titles feature if custom titles are off -->
<?php wp_head(); ?>
Explication: Si ma custom_titles()
est désactivée, add_theme_support('title-tag');
dans functions.php
sous la priorité after_theme_setup
1.
Donc, dans functions.php:
if ( ot_get_option( 'enable_custom_titles' ) === 'off' ) {
add_theme_support( 'title-tag' );
}
En ce qui concerne la priorité after_theme_setup
, dans mon cas, il suffit de charger le framework Option-Tree avant d'utiliser la fonction ot_get_option()
. Elle pourrait donc être différente - inutile - si quelqu'un utilise un framework différent.
Maintenant, mon thème a la nouvelle fonctionnalité de titres dans la version 4.1 et des titres personnalisés pour le référencement en utilisant des méta-boîtes: les deux disponibles. (Je sais que c’est un territoire de plugins, mais c’est bien d’avoir quelques caractéristiques essentielles - "essentielles" à mon avis - intégrées dans le thème). Grâce à cela, les clients auront plus de contrôle sur la façon dont les titres sont affichés.