如何在Wordpress中全局替换URL中的W3 Total Cache
问题描述:
我试图在Wordpress主题中创建自定义wp_head
实现,以与原始方法一起工作。如何在Wordpress中全局替换URL中的W3 Total Cache
我设置我这样的代码在functions.php
:
function wp_head_r()
{
echo '<script src="http://sample-url.com/js/file.js"></script>';
}
然后在header.php中,我有这样的:
wp_head(); //original
wp_head_r();
我的问题是,安装WordPress我m已经安装了W3 Total Cache。所以发生的是,任何引用JavaScript或CSS文件的文件sample-url.com
在输出到页面之前都将被替换为sample-url-cdn.com
。
这是发生在排队的脚本和样式表中,我在考虑设置一个自定义的wp_head
方法可以防止这种情况,但似乎并非如此。
是否可以创建某种过滤器来阻止W3 Total Cache全局替换所有的url?
答
我设法弄清楚了这一点。诀窍是使用高优先级的过滤器,有效地覆盖W3合计缓存正在利用的那个[我认为]。
下面的代码[为functions.php中]:
function my_filter_w3tc_cdn_url($new_url, $url, $is_engine_mirror)
{
if(preg_match('/\/(my_special_dir_pattern)/i', $new_url))
{
$new_url = $url;
}
return $new_url;
};
add_filter('w3tc_cdn_url', 'my_filter_w3tc_cdn_url', 100, 3);
我以前preg_match
的目标是满足特定模式的所有URL,然后被更新到CDN网址排除。另外,请注意,我使用了100的优先级,这似乎足够高,并在我的特定用例中起作用。
希望它有帮助。