gpt4 book ai didi

php - wp_ajax_nopriv 不工作 WordPress

转载 作者:行者123 更新时间:2023-12-01 07:52:35 25 4
gpt4 key购买 nike

我的ajax无法在前端工作,因此wp_ajax_nopriv无法工作,当用户登录时,ajax工作正常,但是当存在相反的情况时,例如用户/管理员注销后,页面正在重定向到主主页,并且 ajax 不适用于未登录的用户。如何解决我的问题,并为这两种情况访问相同的 ajax。我目前使用的是 wordpress 4.0。有没有可能的方法来限制ajax适用于所有场景?

我的代码:

add_action( 'wp_ajax_Test_SO', 'Test_SO' );
add_action( 'wp_ajax_nopriv_Test_SO', 'Test_SO' );

function Test_SO()
{
$a = array('1','2','3');
wp_send_json_success( $a );
}

最佳答案

如果它重定向到您的主页,则听起来像是使用了过滤器来阻止非管理员用户访问 wp-admin 区域。这样的事情很常见,通常在插件或 functions.php 文件中:

function filterNonAdmins() {
if (!current_user_can('manage_options')) {
wp_redirect(home_url());
exit;
}
}

add_action('admin_init', 'filterNonAdmins');

...但是这不好,因为它还会过滤 AJAX 调用。

您需要的是更类似于此的东西:

function filterNonAdmins() {
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {
if (!current_user_can('manage_options')) {
wp_redirect(home_url());
exit;
}
}
}

add_action('admin_init', 'filterNonAdmins');

首先检查是否是 AJAX 调用;如果,则用户/调用不会重定向。

关于php - wp_ajax_nopriv 不工作 WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27846024/

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