web-dev-qa-db-ja.com

Wp_headからメタボロータグを削除する

<meta name=robots content="noindex,follow"/>からwp_headという行だけを削除する必要がありますが、remove_action()と一緒に使用するための正しいフックが見つかりません。

<meta name=robots content="noindex,follow"/>

基本的に私が達成したいのは、ヘッダからこの行だけを削除することですが、検索ページのためだけです。したがって、この場合は次のようなものを使用します。

if ( is_search() ) { remove_action('wp_head', 'whatever-the-action-name-is'); }
3
elvismdev

私はそれを手に入れました、出力は WordPress SEO pluginによって制御されます。これはサイトで有効になっているので、プラグインファイルに小さなハードコードを書く必要がありました class-frontend.php

明らかに、私はこの汚い回避策はそれほど好きではありませんが、検索ページにそのメタを出力することでうまくいきます。

Class-frontend.phpプラグインファイルでは、552行目をこれで置き換える必要がありました。

if ( is_search() ) { $robots['follow'] = 'nofollow'; } else { $robots['follow'] = 'follow'; }
0
elvismdev
add_filter('wpseo_robots', 'yoast_no_home_noindex', 999);
function yoast_no_home_noindex($string= "") {
    if (is_home() || is_front_page()) {
        $string= "index,follow";
    }
    return $string;
}

これは大丈夫だと思います..あなたのテーマのfunctions.phpのどこかに、そしてトリックをするべきです。

5
Sovit Tamrakar

私の他の回答に対するあなたのコメントを基にして、WordPressコアソースのより徹底的な調査(特に default-filters.php )の後に、「このサイトのインデックス作成から検索エンジンを阻止する」を明示的に有効にしたいこれはおそらくあなたがやっていたことだと思います。

add_action( 'posts_selection', 'indexSearchPage' );

function indexSearchPage() {
    // Be sure to include the priority for the action or it won't be removed
    if( is_search() )
        remove_action( 'wp_head', 'noindex', 1 );
}

私はposts_selectionアクションフックを使用します。これは コンディショナルタグ にアクセスするWordPressのロードルーチンの最初のフックです。 wp_headまでの後のアクションを使用できますが、wp_head自体を使用する場合は、noindex1の優先順位で追加されるため、1より低い優先順位でアクションを追加する必要があります。

add_action( 'wp_head', 'indexSearchPage', -1 );

あるいは、条件付きでWordPressを "検索エンジンによるこのサイトのインデックス作成をやめさせる"ことを無効にすることができます。

add_action( 'posts_selection', 'indexSearchPage' );

function indexSearchPage() {
    if( is_search() ) {
        $alloptions = wp_load_alloptions();
        $alloptions[ 'blog_public' ] = '1';
        wp_cache_set( 'alloptions', $alloptions, 'options' );
        wp_cache_set( 'blog_public', '1', 'options' );
    }
}
1
bosco

ダッシュボードのSettings > Readingから[このサイトのインデックス作成を禁止する]チェックボックスをオフにして(サイトのすべてのページからロボット関連のメタタグを削除する)、手動でメタタグを手動で追加することをお勧めします。以下のように、条件付きのテーマのヘッダ

if( ! is_search() )
    echo( '<meta name="robots" content="noindex,nofollow" />' );

あなたは望みの効果を達成するために条件を変えなければならないかもしれません、しかし私はあなたが考えを得ると思います。

テーマを変更したくない場合は、それをwp_headアクションフックに添付することができます。

add_action( 'wp_head', 'noRobots' );

function noRobots() {
    if( ! is_search() )
        echo( '<meta name="robots" content="noindex,nofollow" />' );
}
0
bosco