我可以检查用户是否正在执行任何AJAX请求吗?

时间:2018-03-16 作者:Mido

我创建了一个自定义用户meta,其名称为last_activity.

我使用此元来获取用户上次活动的日期,并且每次用户使用WordPress打开页面时,我都会更新此元wp_head 行动

我的问题是,用户可能在不刷新页面的情况下通过ajax执行某些操作,因此请确保last_activity meta将不会更新。

因此,我的问题是,我是否可以检查当前用户是否执行任何ajax请求,如果是,是否可以do_action?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

最好将更新meta的函数移动到一个钩子中,钩子在AJAX调用期间运行在前端。然后,您就不必费心检查该请求是否是AJAX请求了。init 是一个很好的选择:

function wpse_297026_update_user_activity() {
    update_user_meta( get_current_user_id(), \'last_activity\', time() );
}
add_action( \'init\', \'wpse_297026_update_user_activity\' );
get_current_user_id() 退货0 如果没有用户登录,并且update_user_meta() 如果您尝试打开meta,则会自动失败(不影响数据库)user_id 0, 因此,无需检查用户是否已登录。

尽管如此,您提到要存储上次活动的日期。这需要多精确?我的示例代码将时间存储到秒,但是如果您只需要一天,那么在AJAX请求上更新meta似乎是不必要的。我非常怀疑你会有很多用户一天访问该网站,然后只在两天内发出AJAX请求。

结束

相关推荐

带成功回调的AJAX按钮。(泰坦框架)

我正在创建一个插件Titan Framework 处理选项页。作为插件的一部分,我收集了登录尝试失败的日志,然后将其显示在选项面板中。日志经常需要清除,因此我创建了一个AJAX Button 控制单击时调用清除日志的函数。然而,为了显示这个过程已经发生,并且按下按钮确实做了一些事情,我需要刷新页面。根据Titan Framework的文档,这似乎可以使用按钮的回调属性来完成。上面写着:success\\u callback | string/array |(可选)在成功的ajax调用后要调用的Javasc