web-dev-qa-db-ja.com

Yoast Seo Plugin - 投稿がスティッキーに設定されている場合、投稿に自動的にインデックスを付けないように設定する

私はワードプレスサイトのコンテンツスーパーバイザーです、それは wordpress seo by yoast pluginを使用します。私の責務は、内容を分析し、適切であればそれをスティッキーとマークすることです。特定の投稿をスティッキーとしてマークすると、投稿がカテゴリページにのみ表示されるように設定する機能があります。私がしなければならない次の事は手動でsite-ownerによって指示されたようにシングルポストビューをインデックスなしに設定することです。

このサイトは巨大なので、このプロセスは非常に面倒です。このプロセスを部分的に自動化する方法を探しています。スティッキとして投稿を更新したらすぐに、投稿をインデックスなしに設定する関数をまとめようとしています。

まず、投稿がスティッキに設定されているときにどのwp-functionが起動されるのか知りたいのですが。次に、このサイトは yoastのseo-plugin を使用しているので、投稿をno-indexに設定するseo-pluginのhook/filterについて知りたいのです。関連するフィルタやフックを探すと、フィルタがいくつかある seo-plugin API / yoastのページが見つかりましたが、私の目的に役立つものは見つかりませんでした。

1
gurung

これを解決するための努力の中で、私は仕事のための wordpressフック 用の素晴らしいリソースを見つけ、正しいフックwpseo_saved_postdatahere を見つけました。あなたがそれがより良いかもしれないと思うならば、コードを自由に修正してください。今のところ、それは私のために働きます。

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' );

変更対象のメタは_yoast_wpseo_meta-robots-noindexのみでした。コードを使用して変更を加えたい場合は、以下に示すyoastのメタキーをいくつか示します。

_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

投稿がスティッキであるかどうかを確認してからインデックスを追加しないのはなぜですか。 コンディショナルタグis_sticky()を使用できます。

そのため、<head>ファイルのheader.phpタグで、次の確認を行います。

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