【问题标题】:Wordpress plugin: How to stop timers running in javascript upon plugin deactivationWordpress 插件:如何在插件停用时停止在 javascript 中运行的计时器
【发布时间】:2018-03-26 01:12:04
【问题描述】:

停用插件后,我想停止 javascript 计时器。有没有办法在 JS 中触发将取消 setInterval() 的事件?在停用时调用 wp_dequeue_script() 并不能帮助已经加载站点和插件的客户端。我还尝试了 JS 代码中的 admin_ajax,但由于插件已停用,它不再被处理。有什么建议吗?

【问题讨论】:

    标签: javascript wordpress plugins


    【解决方案1】:

    解决方案因您管理 JS 和 PHP AJAX 回调的方式而异。考虑到你没有包含任何代码,我会给你一个通用的解决方案。

    所以,第一个解决方案与使用主题的 functions.php 无关,但它有点古怪。所以,当你的 JS AJAX 调用得到输出时,它会是一个错误,表明 WP AJAX 找不到你提供的回调方法或者它可能是空的,我没有测试这个。但是您必须找到该输出并且每次有响应时,在您的 success 方法中检查输出,如果输出不是您所期望的,那么只需 clearInterval 计时器变量。

    对此的另一种看法是在您的主题中获得functions.php 的帮助。将 AJAX 回调方法和钩子放在 functions.php 文件中处理逻辑并作为代理工作。

    在 AJAX 回调方法中,您需要检查插件是否处于活动状态。同样,这完全取决于您,但检查插件是否处于活动状态的一些方法可能是

    if ( is_plugin_active( 'plugin-directory-name/plugin-main-file.php') ) {
        // yes it's active
    } else {
        echo json_encode( array(
            'type'    => 'error',
            'message' => 'Plugin deactivated';
        ) );
    }
    

    if ( class_exists( 'AClassInYourPlugin' ) ) {
        // yes it's active
    }
    

    if ( function_exists( 'a_method_in_your_plugin' ) ) {
        // yes it's active
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-24
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      相关资源
      最近更新 更多