我试图让我的WP网站CloudFlare的火箭装载机的工作。 一切正常,除了WP可视化编辑器的罚款。 我跟着建议在这里,但它不工作:
如何添加自定义属性在WordPress的JavaScript代码?
CloudFlare的说,为了使火箭装载机忽略的JavaScript文件,我需要我的脚本之前添加数据cfasync =“假”的标签:
<script data-cfasync="false" src="/javascript.js"></script>
https://support.cloudflare.com/entries/22063443--How-can-I-have-Rocket-Loader-ignore-my-script-s-in-Automatic-Mode-
火箭装载机不会忽略我的JS文件。
这里是我的代码:
function rocket_loader_attributes( $url )
{
$ignore = array (
'http://www.mysite.com/wp-includes/js/tinymce/tiny_mce.js?ver=349-21274',
'http://www.mysite.com/wp-admin/js/editor.js?ver=3.4.2'
);
if ( in_array( $url, $ignore ) )
{ // this will be ignored
return "$url' data-cfasync='false";
}
return $url;
}
add_filter( 'clean_url', 'rocket_loader_attributes', 11, 1 );
什么是错我的代码?
我目前使用的自动模式火箭装载机。
任何人都可以帮忙吗?
也许你可以点我在正确的方向。
谢谢。
我发现这个解决方案!
因为它是写这篇文章在: 控制CloudFlare的火箭装载机
你的剧本几乎是正确的,但手动模式被打破了。 你需要切换到自动模式,然后进行一些修改:
function rocket_loader_attributes_start() {
ob_start();
}
function rocket_loader_attributes_end() {
$script_out = ob_get_clean();
$script_out = str_replace(
"type='text/javascript' src='{rocket-ignore}",
'data-cfasync="false"'." src='",
$script_out);
print $script_out;
}
function rocket_loader_attributes_mark($url) {
// Set up which scripts/strings to ignore
$ignore = array (
'script1.js'
);
//matches only the script file name
preg_match('/(.*)\?/', $url, $_url);
if (isset($_url[1]) && substr($_url[1], -3)=='.js') {
foreach($ignore as $s) {
if (strpos($_url[1], $s)!==false)
return "{rocket-ignore}$url";
}
return "$url' data-cfasync='true";
}
return "$url";
}
if (!is_admin()) {
add_filter( 'clean_url', 'rocket_loader_attributes_mark', 11, 1);
add_action( 'wp_print_scripts', 'rocket_loader_attributes_start');
add_action( 'print_head_scripts', 'rocket_loader_attributes_end');
}
通知,所述标签不具有的示例type='text/javascript'
属性。 出于某种原因,火箭Loader要求data-cfasync='false'
来而不使用type='text/javascript'
......一个错误?
您的代码确实增加了data-cfasync='false'
的属性,但不会覆盖添加的WordPress的行为type='text/javascript'
属性还,这让火箭装载机不要“忽视”你的脚本。
这可能是棘手的覆盖这个WordPress的行为,因为在相关的代码不支持的过滤器...