webentwicklung-frage-antwort-db.com.de

Yoast SEO Hooks überschreiben sich

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.

1
Jaypee

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.

BEISPIEL

add_filter('wpseo_canonical', 'listpagecanonical');
function listpagecanonical($string) {
    if (is_page(1)){
        //I do my stuff here
        return 'http://canonicalurl.com'
    }
    return $string;
}
3
Max

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.

2
Mark Kaplun