J'ai des modèles dynamiques où je dois personnaliser les liens canoniques.
Selon la documentation de Yoast, le hook à utiliser est wpseo_canonical
J'ai deux fonctions pointant vers différentes pages ID:
add_filter('wpseo_canonical', 'listpagecanonical');
function listpagecanonical($string) {
if (is_page(1)){
//I do my stuff here
return 'http://canonicalurl.com'
}
}
Ensuite, j'ai un autre:
add_filter('wpseo_canonical', 'detailpagecanonical');
function detailpagecanonical($string) {
if (is_page(2)){
//I do my stuff here
return 'http://canonicalurl2.com'
}
}
Le problème que je rencontre est que si les deux filtres ont la même priorité, comme dans l'exemple, ils ne fonctionnent tout simplement pas. Si j'ajoute 10, 1 au premier, cela fonctionnera, mais en second lieu. Si j'ajoute 20, 1 à la seconde, cela fonctionnera mais le premier cessera de fonctionner et ainsi de suite.
Y a-t-il un moyen de faire cela de manière à ce qu'ils ne se prennent pas de la sorte?
Merci.
Les filtres doivent être renvoyés même si votre condition échoue. Vous ne renvoyez actuellement la sortie que lorsque votre condition est remplie, et non lorsqu'elle échoue.
return $string;
à la fin de chaque fonction devrait résoudre votre problème.
add_filter('wpseo_canonical', 'listpagecanonical');
function listpagecanonical($string) {
if (is_page(1)){
//I do my stuff here
return 'http://canonicalurl.com'
}
return $string;
}
Le problème est que dans le filtre, vous devriez toujours renvoyer une valeur. Si vous n'avez pas à changer la valeur transmise, vous devez la renvoyer.