gpt4 book ai didi

php - Wordpress 插件中的 is_admin() 和 DOING_AJAX

转载 作者:行者123 更新时间:2023-12-05 08:56:25 25 4
gpt4 key购买 nike

我正在开发一个 Wordpress 插件,其中插件的主文件包含一个 PHP 文件,具体取决于(应该至少)您是后端还是前端。

由于 is_admin() 在 AJAX 请求上返回 true,我使用 DOING_AJAX 常量来检查 AJAX 是否完成:

if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
require_once('admin/functions_admin.php');
}
else {
require_once('public/functions_public.php');
}

wp-admin 中加载了正确的文件。正确的文件在前端加载。 Ajax 请求适用于前端 - 但不适用于后端。使用此代码执行 Ajax 后端时不会执行“if”。

当添加以下“else if”代码时,它可以在后端运行,但当然不能在前端运行:

else if ( is_admin() ) {
require_once('admin/functions_admin.php');
}

最佳答案

在 Ajax in plugin codex 页面上有关于这个事实的注释。

由于钩子(Hook)使用 wp-admin/admin-ajax.php 你必须避免使用 is_admin(),它总是返回 true。

例如,您只想在前端包含一个文件,您可以使用 !is_admin() 检查,在文件中您有 wp_ajax_{$action} , 但 admin-ajax.php 将始终返回 true,响应将为 0。

法典怎么说;

Both front-end and back-end Ajax requests use admin-ajax.php so is_admin() will always return true in your action handling code.

When selectively loading your Ajax script handlers for the front-end and back-end, and using the is_admin() function, your wp_ajax_(action) and wp_ajax_nopriv_(action) hooks MUST be inside the is_admin() === true part.

那么,如果您的问题是:我怎样才能让我的脚本正常工作?

删除 is_admin() 并将其替换为另一个条件。

来源Ajax in plugin

希望对你有帮助

关于php - Wordpress 插件中的 is_admin() 和 DOING_AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40891998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com