web-dev-qa-db-ger.com

Yoast Seo Plugin - Setzt automatisch No-Index auf einen Beitrag, wenn ein Beitrag auf Sticky gesetzt wird

Ich bin ein Content-Supervisor auf einer WordPress-Site, es verwendet WordPress SEO von Yoast Plugin. Meine Aufgabe besteht darin, den Inhalt zu analysieren und ihn als klebrig zu kennzeichnen, wenn es mir passend erscheint. Wenn ich einen bestimmten Beitrag als klebrig markiere, gibt es eine Funktion, die den Beitrag so einstellt, dass er nur auf der Kategorieseite angezeigt wird. Als Nächstes muss ich die Einzel-Post-Ansicht manuell auf no-index setzen, wie vom Websitebesitzer angewiesen.

Da die Site sehr umfangreich ist, wird dieser Prozess sehr mühsam, und ich suche nach einer Möglichkeit, diesen Prozess teilweise zu automatisieren. Ich versuche eine Funktion zusammenzustellen, die den Beitrag auf no-index setzt, sobald ich den Beitrag als sticky aktualisiere.

Zunächst möchte ich wissen, welche wp-Funktion ausgelöst wird, wenn ein Post auf sticky gesetzt ist. Zweitens, da die Site yoasts seo-plugin verwendet, würde ich gerne etwas über den Hook/Filter des seo-plugins erfahren, der den Beitrag auf no-index setzt. Auf der Suche nach relevanten Filtern oder Hooks habe ich die Seite seo-plugin API von yoast gefunden, die einige Filter enthält, aber nichts gefunden, was für meinen Zweck nützlich sein könnte.

1
gurung

Um dieses Problem zu lösen, habe ich eine großartige Ressource für WordPress-Hooks für den Job gefunden und den richtigen Hook wpseo_saved_postdatahier gefunden. Sie können den Code jederzeit ändern, wenn Sie der Meinung sind, dass er besser sein könnte. Im Moment funktioniert es für mich.

function set_noidex_when_sticky($post_id){
        if ( wp_is_post_revision( $post_id ) ) return;
        //perform other checks

        //if(is_sticky($post_id)){ -----> this may work only AFTER the post is set to sticky
        if (isset($_POST['sticky']) == 'sticky') { //this will work if the post IS BEING SET ticky  
            add_action( 'wpseo_saved_postdata', function() use ( $post_id ) { 
            update_post_meta( $post_id, '_yoast_wpseo_meta-robots-noindex', '1' );
            }, 999 );
        }
}
 add_action( 'save_post', 'set_noidex_when_sticky' );

Nur _yoast_wpseo_meta-robots-noindex war das Meta, das ich ändern wollte. Im Folgenden sind einige der Metaschlüssel von yoast aufgeführt, falls Sie mit dem Code Änderungen vornehmen möchten.

_yoast_wpseo_google-plus-description
_yoast_wpseo_linkdex
_yoast_wpseo_opengraph-description
_yoast_wpseo_redirect
_yoast_wpseo_canonical
_yoast_wpseo_sitemap-html-include
_yoast_wpseo_sitemap-prio
_yoast_wpseo_sitemap-include
_yoast_wpseo_meta-robots-adv
_yoast_wpseo_meta-robots-nofollow
_yoast_wpseo_meta-robots-noindex
_yoast_wpseo_metadesc
_yoast_wpseo_title
1
gurung

Warum prüfst du nicht einfach, ob der Beitrag klebrig ist und fügst dann noindex hinzu? Sie können das Bedingte Tagis_sticky() verwenden.

Führen Sie in Ihrem <head> -Tag in Ihrer header.php -Datei die folgende Überprüfung durch:

if ( is_sticky() && is_single() ) {
    // it's a post and it's sticky, let's add noindex
    echo '<meta name="robots" content="noindex">';
}
0