如何确定wp-admin操作是否编辑了文件?

时间:2013-11-02 作者:janpio

我想创建一个小插件,在Wordpress管理界面中执行特定操作后自动清除APC操作码缓存。如apc,这是必要的。stat设置为0,因为对文件的更改不会重置其在操作码缓存中的缓存值,因此调用将使用旧的、缓存的、过期的文件。如果忘记手动清除缓存,则会导致调试噩梦。

Is there an easy way to find out if an action edited/changed a file?

我可以手动检查is\\u admin和POST以及file是否为主题编辑器。php,但这似乎是一个不太好的黑客,肯定会错过一些东西。

2 个回复
SO网友:s_ha_dum

The system redirects after an update with updated=true. 你可以检查一下GET 上的参数load-theme-editor.php hook,类似于:

add_action(
  \'load-theme-editor.php\',
  function() {
    if (isset($_GET[\'updated\']) && true == $_GET[\'updated\']) {
      // clear the cache
    }
  }
);
顺便说一句,我找了更多具体的钩子,但没有找到。

SO网友:Mark Kaplun

您应该将APC设置为仅在部署环境中不检查文件更新。如果您授予更改代码的权限,则它不是部署环境。

通常,您试图执行的操作违反了基本的监控规则-软件/设备不应自行监控,因为它可能会进入无法进行监控的状态。在您的情况下,如果监控代码中有bug,您将发现很难修复它。

更好的解决方案是使用一个外部程序来监视wordpress根目录下的文件更改,并在检测到缓存时清除缓存。它将比您在这里尝试的要小得多,更可靠,更容易维护。(既然你有APC,我假设你有自己的VP,可以挂接到所有OSs现在都有的文件更改通知服务)

结束

相关推荐

为什么运行管理检查会抛出500错误?我正在调用is_Super_admin();

我有一个我写的插件。一个用户的主题使用蒙版仪表板在其网站上添加列表时遇到兼容性问题。如果用户已登录,并且是参与者,但不是管理员,则我对is\\u admin()的检查将返回true,因为从技术上讲,它们位于仪表板页面上。所以我的代码检查它们是否是admin,然后运行一系列函数。检查之一是他们是否有权限管理选项。如果他们没有管理选项的权限,它就会失效。这是主题的一个问题,所以我简单地用以下内容包装了我的add\\u action标记if ( is_super_admin() ) { a