当前位置:  开发笔记 > 编程语言 > 正文

用户未登录时,Wordpress AJAX返回0

如何解决《用户未登录时,WordpressAJAX返回0》经验,为你挑选了1个好方法。

之前已经问过这个问题,但我已经尝试了很多东西来使它工作,我不知道我错过了什么.我有一个Wordpress站点的成员目录,它使用Ajax来调用和显示成员配置文件.它还允许您按名称按字母顺序对它们进行排序.登录时两者都可以正常工作,但在注销时返回"0".我已经使用具有不同权限的多个帐户对其进行了测试,只要有一个帐户登录任何帐户,它就可以正常工作.

我有两个

add_action('wp_ajax_nopriv_load-filter', 'load_members');

add_action('wp_ajax_load-members', 'load_members');

添加,我读过它应该使它适用于登录和未登录的用户.我假设没有登录的用户无法访问Ajax工作所必需的东西,可能是我一直在阅读的ajax-admin.php文件,但我尝试过的任何修复都没有.

我尝试在chrome(F12,检查网络错误等)中进行调试,但没有找到有用的信息.我还将console.log()行添加到我的代码的各个部分以确定它是否被调用,并且它们都按预期调用,登录或注销.

无论如何,这是我在functions.php中的代码(不包括add_action部分):

     function load_members()
           {

              $letter = $_POST[ 'letter' ];

                    if($letter == "all") {

                        $args = array(
                            'role' => 'Subscriber', );

                            $user_query = new WP_User_Query($args);

                            ob_start();

                            global $user;

                            if (!empty($user_query->results)) {
                            foreach ($user_query->results as $user) {
                            get_template_part('template', 'directory');
                      }
                                } else {
                echo '
No users found.
';} $response = ob_get_contents(); ob_end_clean(); echo $response; die(1);

这是我的目录页面中的功能:

function members_get(catID) {
jQuery("a.ajax").removeClass("current");
jQuery("#category-post-content").fadeOut();
$('.' + catID).addClass("current"); //adds class current to the  menu item being displayed so you can style it with css
jQuery("#loading-animation").show();
var ajaxurl = '';
console.log(ajaxurl);
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {"action": "load-members", letter: catID },
success: function(response) {
jQuery("#category-post-content").fadeIn();
jQuery("#category-post-content").html(response);
jQuery("#loading-animation").hide();
return false;

}

对于functions.php部分的格式化表示歉意; 它粘贴很奇怪,我试图解决它.有谁知道发生了什么事?



1> Nathan Dawso..:

问题出在你的电话上add_action.

add_action('wp_ajax_nopriv_load-filter', 'load_members');
add_action('wp_ajax_load-members', 'load_members');

你在想,你需要正确的都wp_ajax_(action)wp_ajax_nopriv_(action).(action)对两者都应该是相同的.

更新至:

add_action( 'wp_ajax_nopriv_load-members', 'load_members' );
add_action( 'wp_ajax_load-members', 'load_members' );

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有