Festlegen einer benutzerdefinierten kanonischen URL im Yoast WordPress SEO-Plugin

Lesezeit: 3 Minuten

Benutzer-Avatar
Jan

Wegen fehlender Antworten erneut gepostet.

Ich habe Probleme beim Festlegen eines benutzerdefinierten kanonischen Titels mit der WordPress-SEO-API: http://yoast.com/wordpress-seo-api-docs/

Ich habe einen benutzerdefinierten Beitragstyp namens Designs, der eine benutzerdefinierte URL-Umschreibung verwendet. Es nimmt die Basisseite /design/ und fügt ihr den Designnamen wie /design/a-design/ hinzu. Die kanonische Seite in WordPress SEO ist standardmäßig die Seite /design/.

Ich möchte eine Funktion schreiben, die bestimmt, ob es sich um eine Designseite handelt, und eine andere kanonische zurückgeben. Ich kann testen, ob es sich um eine Designseite handelt, indem ich es tue if ($design == ""){ und ich habe versucht, die benutzerdefinierte Permalink-URL zu verwenden, aber die Funktion entfernt den kanonischen nur vollständig.

Hier ist meine Grundfunktion:

function design_canonical(){
    if ($design == "") {    
        // Leave blank and Yoast SEO will use default canonical for posts/pages
    }
    else {
        return $design['detailslink'];
    }
}
add_filter( 'wpseo_canonical', 'design_canonical' )

Ganz klar etwas falsch machen, aber ich bin mir nicht ganz sicher, was.

Gedanken?

Benutzer-Avatar
Stealthyninja

Du könntest so etwas versuchen:

function design_canonical($url) {
    global $post;

    if ( get_post_type( $post->ID ) == 'design' ) {
        return site_url( '/design/' . $post->post_name );
    } else {
        // Do nothing and Yoast SEO will use default canonical for posts/pages
        return $url;
    }
}
add_filter( 'wpseo_canonical', 'design_canonical' );

  • Gute Idee. Ich habe es versucht, aber es hat nicht funktioniert. Bisher konnte ich nur add_filter( ‘wpseo_canonical’, ‘__return_false’ ); zur Vorlage, um das Canonical auf der Designseite vollständig zu entfernen.

    – Jan

    22. November 2012 um 21:10 Uhr

  • Ich habe sogar nur die Funktion design_canonical() { return $design ausprobiert[‘detailslink’]; } add_filter( ‘wpseo_canonical’, ‘design_canonical’); aber es hat nicht funktioniert! Wenn ich $design wiedergebe[‘detailslink’] Es funktioniert jedoch und zeigt die richtige URL an.

    – Jan

    22. November 2012 um 21:12 Uhr

  • Es stellt sich heraus, dass ich ein Schwachkopf bin. Es hat nicht funktioniert, weil ich nicht die globale $wp_query angegeben habe, um die $design-Variable abzurufen. Als ich das tat, funktionierte Ihre Antwort. Danke für Ihre Hilfe!

    – Jan

    22. November 2012 um 21:32 Uhr

Benutzer-Avatar
Raffael

Hallo, ich konnte auf den obigen Beitrag nicht antworten, also mache ich einfach einen anderen.

Ich habe versucht, die Antwort von Stealthyninja für ein ähnliches Problem zu verwenden, und es hat fast funktioniert. Außer dem letzten Teil: die leere else-Anweisung. Es wird keine Ausgabe gerendert, wenn die Regel nicht übereinstimmt.

Vielleicht hat Yoast sein Plugin diesbezüglich in den letzten 2 Jahren aktualisiert, also dachte ich, ich sollte es hier erwähnen.

Folgendes Code-Snippet löste mein Problem:

function design_canonical($url) {
    global $post;

    if ( get_post_type( $post->ID ) == 'design' ) {
         return site_url( '/design/' . $post->post_name );
    } else {
         return $url;
    }
}
add_filter( 'wpseo_canonical', 'design_canonical' );

  • Ich habe ein ähnliches Problem, nur eine kurze Frage, Raphael, woher rufst du diese Funktion auf? Innerhalb von Yoast oder der Vorlage?

    – mattgcon

    11. Mai 2015 um 17:26 Uhr

  • Ich würde empfehlen, diese Funktion in der Datei functions.php Ihres aktiven Themes aufzurufen. Oder (wie ich es tat) in Ihrem eigenen Plugin. Aber ich denke, der erste Fall ist häufiger.

    – Raffael

    13. Mai 2015 um 7:56 Uhr

1383750cookie-checkFestlegen einer benutzerdefinierten kanonischen URL im Yoast WordPress SEO-Plugin

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy