从wp_head中删除元机器人标签

时间:2014-02-27 作者:elvismdev

我需要删除这条线<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\'); }

5 个回复
最合适的回答,由SO网友:elvismdev 整理而成

我知道了,输出由WordPress SEO 插件,因为这是在网站上启用的,所以我不得不在插件文件中添加少量硬代码class-frontend.php

显然,我不太喜欢这种肮脏的解决方法,但它现在可以在搜索页面中输出我想要的元数据。

在课堂前端。php插件文件我不得不用这个替换552行

if ( is_search() ) { $robots[\'follow\'] = \'nofollow\'; } else { $robots[\'follow\'] = \'follow\'; }

SO网友:Sovit Tamrakar

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;
}
我想这应该没问题。。在你的主题功能中的某个地方。php和应该可以做到这一点。

SO网友:bosco

根据您对我的另一个答案的评论,这意味着您明确希望在对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加载例程中的第一个钩子,可以访问conditional tags. 您可以在以下日期之前使用后续操作wp_head, 但是如果你使用wp_head 您需要添加优先级小于1noindex 添加的优先级为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\' );
    }
}

SO网友:bosco

我建议只需取消选中Settings > Reading 在仪表板上(这应该从站点的所有页面中删除robot相关的元标记),然后使用条件将元标记手动添加回主题的标题,如下所示:

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" />\' );
}

SO网友:Yarr

这就是你要找的吗?

if ( is_search() ) {
    remove_action( \'do_robots\', \'do_robots\');
}

结束

相关推荐

Advanced searching form

我正在尝试在前端页面上为用户创建一个高级搜索页面。我一直在努力寻找,但要找到一些教程或示例源代码并不容易。我发现可以在管理面板上放置一些过滤器。我正在寻找这样的前端用户。See this tutorial for admin panel我需要为用户创建这样的前端。这是自定义帖子类型搜索。有什么建议吗?教程,样例代码?感谢您抽出时间,祝您周末愉快;)