操作挂接wp_head的优先级高于所有其他插件/挂接

时间:2015-11-10 作者:cgee

我在wordpress API上做了一些工作,我想尝试包括<meta>-标记到我网站的头部区域。

This is my code (works everything fine!):

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;

My problem:

我使用WP插件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. -->
don\'t want 停用此Yoast SEO插件!我试图为我的add_action 但这行不通。

E、 g.:

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

My question is:

如何包括我的<meta>-标签位于<meta>-Yoast SEO插件的标签?我可以在所有插件中首先包含我的代码吗?

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

我只是浏览了一下WPSEO_Frontend 类并找到wpseo_robots 筛选meta robots内容字符串。

您可以尝试以下操作:

add_filter( \'wpseo_robots\', function( $content )
{
        // your logic here ...
        return $content;    
} );
覆盖该插件中的机器人元内容。

ps:您应该考虑移动add_action 类构造函数之外。

SO网友:Mark Kaplun

当你遇到相互冲突的标签时,很可能会在google端输入“未定义的功能”,因此,将其包含得更高可能不是你想要的正确选择。

如果您不希望yoast SEO输出其标记,您需要在其代码中找到如何禁用或覆盖特定功能。

但可能你能做的最有力的事情就是禁止机器人中的那些页面。而不是与所有SEO插件“战斗”。您可以使用do\\u 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\' );

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请