从插件中的echo语句中停用脚本



如果满足条件,我想从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读取查询字符串参数,并输出原始插件文件的内容。

这有道理吗?

最新更新