首页 > 解决方案 > 从插件中的 echo 语句停用脚本

问题描述

如果满足条件,我想从 Woocommerce 结帐页面中删除脚本。

该脚本是从插件注入的。插件作者选择将其添加为 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');
}

不幸的是,由于脚本未注册/入队,上述操作失败。

对于这种情况,我可以尝试其他方法吗?

标签: phpwordpress

解决方案


解决这个问题的一种方法是使用你的.htaccess文件并重定向trackjs.php到另一个你什么都不返回的地方。

说,您要有条件地执行的脚本是这个:http://localhost/wordpress/trackjs.php. 在.htaccessWordpress 的东西之前在这行写一些东西:

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原始插件文件的内容读取查询字符串参数并输出。

那有意义吗?


推荐阅读