如何修改jQuery实现WordPress插件缓存每日自动清理?
当然可以实现!不过先得明确:用前端jQuery自动触发的方式其实不太适配你「每日自动执行、无需固定时间」的核心需求——因为前端代码只有在有人访问后台页面时才会跑,没法保证每天自动运行。我先回应你关于修改jQuery的问题,再给你推荐更靠谱的后端定时方案:
一、前端jQuery自动触发(仅作参考,不推荐用于每日定时)
如果只是想在后台页面加载时自动执行清空操作(比如每次进后台就自动清缓存,但不是每日定时),你可以直接在页面加载完成后调用核心的清空函数,同时去掉确认弹窗(自动执行不需要用户确认):
jQuery(document).ready(function() { // 跳过弹窗,直接调用清空缓存的核心函数 delete_all_url("All"); });
但这个方法的局限性很明显:只有当你登录后台并打开对应页面时才会执行,完全没法实现“每日自动”的需求,所以更推荐下面的后端定时方案。
二、推荐:用WP Cron实现每日自动执行(稳定可靠)
WordPress自带的WP Cron系统是做定时任务的最佳选择,它可以在后台自动触发PHP函数,完全不需要用户登录或访问页面,刚好匹配你的需求。
具体步骤:
找到后台处理清空的核心PHP函数
首先,你需要在插件的PHP文件里找到处理delete_all_url这个AJAX动作的函数——通常会有类似add_action('wp_ajax_delete_all_url', 'xxx_delete_function')的代码,这里的xxx_delete_function就是真正执行清空缓存的核心函数,记下来它的名字。添加定时任务到WP Cron
把下面的代码添加到你的主题functions.php或者插件的自定义PHP文件中(记得把your_delete_function替换成你刚才找到的函数名):
// 注册每日清空缓存的定时任务 function register_daily_cache_clear() { // 检查任务是否已注册,避免重复添加 if (!wp_next_scheduled('daily_cache_clear_hook')) { // 每天执行一次,WP会自动安排合适的运行时间,不需要你指定固定点 wp_schedule_event(time(), 'daily', 'daily_cache_clear_hook'); } } add_action('wp', 'register_daily_cache_clear'); // 定义定时任务要执行的操作 function daily_cache_clear_function() { // 调用插件的核心清空函数 if (function_exists('your_delete_function')) { your_delete_function(); } } add_action('daily_cache_clear_hook', 'daily_cache_clear_function');
- 验证定时任务是否生效
你可以安装WP Crontrol这类插件来查看和管理WP Cron任务,确认daily_cache_clear_hook已经被正确注册为每日执行的任务。
为什么不推荐前端方案?
- 前端触发依赖用户访问后台页面,没法保证每天自动运行;
- 每次打开页面都会清空缓存,可能导致不必要的性能损耗;
- 无用户交互的情况下,自动发送AJAX请求可能被浏览器安全策略限制。
用WP Cron的方案就能完全解决你的问题,不用再每天登录后台点按钮,系统会自动每日执行清空操作~
内容的提问来源于stack exchange,提问作者memrat

