web-dev-qa-db-ja.com

action hook wp_head他のすべてのプラグイン/フックよりも高い優先順位

私はwordpress APIを使って少し仕事をしています、そして私は私のウェブサイトの私のヘッドエリアに<meta>-タグを含めようとしたいです。

これは私のコードです(すべてうまく動作します!):

class dmd_noindex_options_page{
    function __construct() {
        add_action( 'wp_head', array( $this, 'set_meta') );
    }
    function set_meta(){
       $pages = get_option('dmd_noindex_pages');
       $pages_id = explode(',', $pages);           
       for($i = 0; count($pages_id) > $i; $i++){
           if(is_page($pages_id[$i])){
              echo '<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">';
           }
        }
    }
}
new dmd_noindex_options_page;

私の問題:

私はWP PlugIn Yoast SEOを使用しています、そして私がウェブサイトの私のコードを見れば私は私の<meta>タグの上でこれを見ます。

<!-- This site is optimized with the Yoast SEO plugin v2.3.5 - https://yoast.com/wordpress/plugins/seo/ -->
<meta name="robots" content="noindex,follow"/>
<meta name="description" content="Impressum von EK Immobilien und Kontaktaufnahme"/>
<link rel="canonical" href="http://ek.dimadirekt.com/de/impressum/" />
<meta property="og:locale" content="de_DE" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Impressum -" />
<meta property="og:description" content="Impressum von EK Immobilien und Kontaktaufnahme" />
<meta property="og:url" content="http://ek.dimadirekt.com/de/impressum/" />
<meta name="Twitter:card" content="summary"/>
<meta name="Twitter:description" content="Impressum von EK Immobilien und Kontaktaufnahme"/>
<meta name="Twitter:title" content="Impressum -"/>
<!-- / Yoast SEO plugin. -->

私はこのYoast SEO PlugInを無効にしたくありません!私は自分のadd_actionに高い優先順位を設定しようとしましたが、うまくいきません。

例えば。:

add_action( 'wp_head', array( $this, 'set_meta', 2,1) );

私の質問です:

Yoast SEOプラグインの<meta>-タグの上に<meta>-タグを含めるにはどうすればよいですか?自分のコードをすべてのプラグインの最初に含めることはできますか?

1
cgee

私はWPSEO_Frontendクラスを一通り見て、メタロボットコンテンツの文字列用のwpseo_robotsフィルタを見つけました。

あなたは以下のようなことを試みるかもしれません:

add_filter( 'wpseo_robots', function( $content )
{
        // your logic here ...
        return $content;    
} );

そのプラグインからロボットのメタコンテンツを上書きする。

ps:add_actionをクラスコンストラクタの外に移動することを検討するべきです。

2
birgire

競合するタグに遭遇したときにグーグル側で「未定義の機能」を入力する可能性が最も高いので、それをより高く含めることはおそらくあなたが望む正しい方法ではありません。

あなたがyoast SEOにそのタグを出力させたくない場合は、そのコード内で特定の機能を無効にする方法または無効にする方法を見つける必要があります。

しかし、おそらくあなたができる最も頑強なことは、すべてのSEOプラグインと「戦う」のではなく、robots.txtでそれらのページを許可しないことです。そのためにはdo_robotstxtアクションを使用できます。のようなもの(ここから撮影 https://vip.wordpress.com/documentation/vip-development-tips-tricks/robots-txt/

function my_disallow_directory() {
    echo "User-agent: *" . PHP_EOL;
    echo "Disallow: /path/to/your/directory/" . PHP_EOL;
}
add_action( 'do_robotstxt', 'my_disallow_directory' );
1
Mark Kaplun