如果满足条件,我想从Wooccommerce结账页面中删除一个脚本。
脚本是从插件中注入的。插件作者选择将其添加为echo语句:
private function includeJavascript() {
$trackjsUrl = str_replace('server.php', 'trackjs.php', $this->session->getUrl());
echo '<script id="pap_x2s6df8d" src="'.$trackjsUrl.'" type="text/javascript"></script>';
}
因为脚本(#pap_x2s6df8d(已添加到Echo语句中,所以删除它的常用函数不起作用(例如wp_deregister_script(
我想避免编辑插件。还有别的办法吗?
如果按照Wordpress最佳实践询问脚本,我会这样处理:
if( isset( $_COOKIE['cookieexists'] ) ) {
echo " // Cookie was found";
echo " // deactive script";
wp_deregister_script('pap_x2s6df8d');
wp_dequeue_script( 'pap_x2s6df8d');
}
不幸的是,由于脚本没有注册/查询,上述操作失败了。
对于这种情况,我能尝试其他选择吗?
解决此问题的一种方法是使用.htaccess
文件并将trackjs.php
重定向到另一个不返回任何内容的地方。
比方说,您想要有条件地执行的脚本是这样的:http://localhost/wordpress/trackjs.php
。在.htaccess
中,在Wordpress内容之前写下以下内容:
RewriteEngine On
RewriteRule ^trackjs.php$ /wp-content/themes/my-theme/custom-theme-file.php [L]
(实际实现取决于您的用例。您可以在此处尝试不同的规则。(custom-theme-file.php
输出一个空字符串:
<?php echo ''; wp_die(); ?>
现在是条件部分:如果你想用javascript完成这项工作,你可以再次添加脚本,但现在在url中附加一个查询字符串。在custom-theme-file.php
中,您可以使用$_GET
读取查询字符串参数,并输出原始插件文件的内容。
这有道理吗?