如何在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的优先级,这似乎足够高,并在我的特定用例中起作用。

希望它有帮助。