用WordPress实现域名预取

时间:2015-02-07 作者:iSaumya

我不确定我的问题听起来是否有希望,但我要问的是非常相关的。因此,请在投票或挂旗之前阅读完整的问题。

我正试图在我的wordpress mu上实现DNS预取,这是一种逐站点的方法。在我的主站点上,我使用了一个子主题,因此我计划在function.php 为了得到我想要的东西。

function dns_prefetch() {
    echo \'<link rel="dns-prefetch" href="//cdn.mysite.com" />\';
    echo \'<link rel="dns-prefetch" href="//fonts.googleapis.com" />\'
}
add_action(\'wp_head\', \'dns_prefetch\');
wordpress的功能和钩子的工作方式是将此代码放入<head> 生成的html的节,其中wp_head() 已在主题的(父或子)中调用header.php

但根据谷歌最佳编码实践,最好将DNS预取代码放在尽可能高的位置。根据谷歌的说法,最好像这样使用它

<html>
<head>
<link rel="dns-prefetch" href="//cdn.mysite.com" />
<link rel="dns-prefetch" href="//fonts.googleapis.com" />
<!-- rest of my the code -->
</head>
但我不知道怎么做,因为所有主题都将代码放在header.php 通话前wp-head.

那么,我的问题是,有没有办法在启动后放置这些dns预取代码<head> 标签请帮忙。

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

As of WordPress 4.6.0 there is a resource hints API that automatically adds all unique enqueued domains, which you can override with wp_resource_hints - you should only use the following answer if you\'re stuck with < 4.6.0


你所能做的就是提高你的钩的优先级:

add_action( \'wp_head\', \'dns_prefetch\', 0 /* Highest priority */ );
但这是否会将我的代码放在标记的开头之后?

否,但它将在附加到的任何其他函数之前输出wp_head i、 e.其他<link />\'s、 大多数样式表、插件脚本等。

把它放在后面<head> 您很可能需要编辑主题的header.php 直接地

真的没有别的办法吗?

您可以通过一些输出缓冲来解决它:

function wpse_177395_start_buffering( $template ) {
    ob_start();
    return $template;
}

add_filter( \'template_include\', \'wpse_177395_start_buffering\' );

function wpse_177395_flush() {
    $content = ob_get_clean();
    $content = preg_replace( \'/<head[^>]*>/\', \'$0
    <link rel="dns-prefetch" href="//cdn.mysite.com" />
    <link rel="dns-prefetch" href="//fonts.googleapis.com" />\',
        $content
    );

    echo $content;
}

add_action( \'wp_head\', \'wpse_177395_flush\', 0 );

SO网友:Celso Bessa

简单设置中可能有用的少量信息(最明显的是那些没有使用ob\\u start的插件的信息):

1) 您不需要将dns预取调用作为第一个元素。您需要的是尽快将它们放在调用外部资源的任何其他元素之前。

(2)Is actually possible to use negative numbers as priority 在…上add_action.

因此,可以使用add_action( \'wp_head\', \'dns_prefetch\', -1 ); 而且几乎可以保证在上述简单设置上工作。

事实上,我们一直在https://clinicawp.2aces.com.br 乔布斯,希望这对你们有帮助。

SO网友:Brad Griffin

子主题可以有自己的标题。php文件,对吗?那么,为什么不干脆删除一个子标题呢。php文件到子主题的文件夹中,然后在那里添加代码?

除非我遗漏了什么,否则这似乎是最简单的解决方案。

结束

相关推荐

Child theme functions.php

我不知道如何改变我的孩子主题的功能。php。在woothemes文档中,它说“子主题中的functions.php应该是空的,并且不包括父主题functions.php中的任何内容。”我需要使用此功能来不显示产品类别,但我不确定如何在我的子主题中执行此操作。也许有人能给我提供一些指示?add_action( \'pre_get_posts\', \'custom_pre_get_posts_query\' ); function custom_pre_get_posts_query( $