我只需要删除这一行 <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'); }
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 中的某个地方,应该可以解决问题。
根据您对我的其他答案的评论,暗示您明确希望启用“阻止搜索引擎索引此站点”,在对 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
action 挂钩,因为它是 WordPress 加载例程中第一个可以访问条件标签的挂钩。 您可以使用以后的操作,直到并包括 wp_head
但如果你使用 wp_head
本身你需要添加优先级低于 1
作为 noindex
添加了优先级 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' );
}
}
