Ich habe einige dynamische Vorlagen, in denen ich die kanonischen Links anpassen muss.
Laut Yoast-Dokumentation lautet der zu verwendende Hook wpseo_canonical
Ich habe zwei Funktionen, die auf verschiedene Seiten-IDs verweisen:
add_filter('wpseo_canonical', 'listpagecanonical');
function listpagecanonical($string) {
if (is_page(1)){
//I do my stuff here
return 'http://canonicalurl.com'
}
}
Dann habe ich noch einen:
add_filter('wpseo_canonical', 'detailpagecanonical');
function detailpagecanonical($string) {
if (is_page(2)){
//I do my stuff here
return 'http://canonicalurl2.com'
}
}
Das Problem, das ich habe, ist, dass, wenn beide Filter die gleiche Priorität haben, wie im Beispiel, sie einfach nicht funktionieren. Wenn ich 10, 1 zu der ersten hinzufüge, funktioniert es, aber die zweite nicht. Wenn ich 20, 1 zu Sekunde hinzufüge, funktioniert es, aber zuerst funktioniert es nicht mehr und so weiter.
Gibt es eine Möglichkeit, dies so zu tun, dass sie sich selbst nicht so überschreiben?
Vielen Dank.
Filter sollten zurückgegeben werden, auch wenn Ihre Bedingung fehlschlägt. Sie geben gerade die Ausgabe zurück, wenn Ihre Bedingung erfüllt ist, nicht, wenn sie fehlschlägt.
return $string;
am Ende jeder Funktion sollte Ihr Problem lösen.
add_filter('wpseo_canonical', 'listpagecanonical');
function listpagecanonical($string) {
if (is_page(1)){
//I do my stuff here
return 'http://canonicalurl.com'
}
return $string;
}
Das Problem ist, dass Sie im Filter immer einen Wert zurückgeben sollten. Wenn Sie den übergebenen Wert nicht ändern müssen, sollten Sie ihn zurückgeben.