我的意思是is\\u admin()是检查您是否在管理中,因此它将返回false,这样内部的代码就不会在前端执行,不是吗?
使用此方法发送AJAX请求时,您将其发送到wp-admin/admin-ajax.php
, 它位于管理中。这在您引用的文本中进行了解释:
前端和后端Ajax请求都使用管理Ajax。php so is\\u admin()在操作处理代码中始终返回true。
AJAX请求是从哪里发送的并不重要。当发出请求时,它是一个与加载您所在页面的原始前端请求完全不同的请求。这是对WordPress管理员的新请求。
需要记住的重要一点是,AJAX请求实际上只是在后台打开网页的JavaScript。因此,这与打开/wp-admin/admin-ajax是一样的。php在新选项卡中。如果你那样做了is_admin()
是真的,这就是为什么当您使用JavaScript发出请求时仍然是真的。
另一件要记住的事是add_action()
调用队列功能以仅针对当前请求运行。那些add_action()
每次加载页面时都会运行调用,为页面加载的其余部分做好准备。当您用代码加载前端页面时,它会排队my_frontend_action()
如果当前请求是AJAX请求,但不是,则运行,因此不会发生任何事情。对于稍后从该页面发出的AJAX请求,不会存储或记住任何内容。
当发出AJAX请求时,会再次检查此条件,但是add_action()
从不运行,因为is_admin()
是真的,所以什么都没有发生,因为add_action()
来自前端的请求没有被存储或记住,这次也不会触发。