WordPress : pourquoi le filtre wp_title ne fonctionne pas du tout ?
Je sais qu’il y a d’autres questions comme celle-ci mais je n’ai pas trouvé de réponse fiable. Alors:
Activez d’abord la chose (code simplifié):
add_action( 'after_setup_theme', 'theme_setup' );
function theme_setup() {
add_theme_support('title-tag');
}
Deuxièmement, supprimez la balise de titre de header.php.
Troisièmement, sur les modèles de page, avant d’appeler get_header()
, ajoutez quelque chose comme ceci :
add_filter('wp_title', 'set_custom_title', 10, 3);
function set_custom_title($title, $sep, $seplocation){
return 'test';
}
Eh bien, cela ne fonctionne pas du tout, dans n’importe quel modèle, qu’il s’agisse d’une page, d’une archive, d’une taxonomie personnalisée ou d’une archive de type de publication. Non rien. WordPress génère des titres par lui-même.
Pourquoi? Est-ce que je fais quelque chose de mal? Notez qu’il était une fois ce code qui fonctionnait : utilisé dans d’autres sites/thèmes.
Est-ce peut-être un problème de wp5.2.0 ?
Solution n°1 trouvée
Donc, grâce à @Vel, la réponse est de rajouter la balise de titre (même si dans les versions précédentes de wp> je ne sais pas jusqu’à quelle version vous deviez la supprimer de la tête à la place).
Code de travail actuel pour moi:
//functions.php
add_action( 'after_setup_theme', 'theme_setup' );
function theme_setup() {
add_theme_support('title-tag');
}
//header.php
<title><?php wp_title('|', true, 'right'); ?> | <?php echo get_bloginfo('name') ?></title>
//page templates
$window_title = // do something
add_filter('wp_title', function($title, $sep, $seplocation) use($window_title){ return $window_title; }, 10, 3);
Solution n°2 trouvée
Pour tous ceux qui ont encore ce problème de wp_title
filtre qui ne fonctionne pas, je suggérerais d’ajouter une valeur de priorité plus élevée. La valeur de priorité la plus élevée garantira que votre filtre est exécuté et non remplacé par d’autres filtres de votre thème ou des plugins installés. Veuillez voir ci-dessous : (réf : https://developer.wordpress.org/reference/functions/add_filter/)
// the 9999999 priority value will force this filter to be executed closer to the end. A lower number corresponds with earlier execution
add_filter('wp_title', 'set_custom_title', 9999999, 3);
function set_custom_title($title, $sep, $seplocation){
return 'test';
}
Solution n°3 trouvée
Essayez d’utiliser le code suivant –
add_filter('document_title_parts', function($titles){
return array('title' => 'Custom Title');
});
Solution n°4 trouvée
Donc, grâce à @Vel, la réponse est de rajouter la balise de titre (même si dans les versions précédentes de wp> je ne sais pas jusqu’à quelle version vous deviez la supprimer de la tête à la place).
Code de travail actuel pour moi:
//functions.php
add_action( 'after_setup_theme', 'theme_setup' );
function theme_setup() {
add_theme_support('title-tag');
}
//header.php
<title><?php wp_title('|', true, 'right'); ?> | <?php echo get_bloginfo('name') ?></title>
//page templates
$window_title = // do something
add_filter('wp_title', function($title, $sep, $seplocation) use($window_title){ return $window_title; }, 10, 3);
Solution n°5 trouvée
Pour tous ceux qui ont encore ce problème de wp_title
filtre qui ne fonctionne pas, je suggérerais d’ajouter une valeur de priorité plus élevée. La valeur de priorité la plus élevée garantira que votre filtre est exécuté et non remplacé par d’autres filtres de votre thème ou des plugins installés. Veuillez voir ci-dessous : (réf : https://developer.wordpress.org/reference/functions/add_filter/)
// the 9999999 priority value will force this filter to be executed closer to the end. A lower number corresponds with earlier execution
add_filter('wp_title', 'set_custom_title', 9999999, 3);
function set_custom_title($title, $sep, $seplocation){
return 'test';
}
Solution n°6 trouvée
Essayez d’utiliser le code suivant –
add_filter('document_title_parts', function($titles){
return array('title' => 'Custom Title');
});
0 commentaire