【发布时间】:2018-03-26 01:12:04
【问题描述】:
停用插件后,我想停止 javascript 计时器。有没有办法在 JS 中触发将取消 setInterval() 的事件?在停用时调用 wp_dequeue_script() 并不能帮助已经加载站点和插件的客户端。我还尝试了 JS 代码中的 admin_ajax,但由于插件已停用,它不再被处理。有什么建议吗?
【问题讨论】:
标签: javascript wordpress plugins
停用插件后,我想停止 javascript 计时器。有没有办法在 JS 中触发将取消 setInterval() 的事件?在停用时调用 wp_dequeue_script() 并不能帮助已经加载站点和插件的客户端。我还尝试了 JS 代码中的 admin_ajax,但由于插件已停用,它不再被处理。有什么建议吗?
【问题讨论】:
标签: javascript wordpress plugins
解决方案因您管理 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
}
【讨论】: