2017-01-10 13 views
1

これまでに質問されていましたが、動作させるために多くのものを試しましたが、何が欠けているのか分かりません。私はAjaxを使ってメンバーのプロフィールを呼び出して表示するWordpressサイト用のメンバーディレクトリを持っています。また、アルファベット順に並べ替えることもできます。両方ともログインすると問題なく動作しますが、ログアウトすると「0」を返します。私は、さまざまな権限を持つ複数のアカウントでテストしました。いずれかのアカウントでログインしている限り、正常に動作します。私は両方の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()の行を追加して、呼び出されているかどうかを判断し、すべてが期待通りに呼び出され、ログインまたはログアウトされました。とにかく

は、ここ(add_action部分は含まない)のfunctions.phpからの私のコードです:上のフォーマットのための

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 = '<?php echo admin_url('admin-ajax.php'); //must echo it?>'; 
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; 

} 

謝罪:

 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 '<div class="center" >No users found.</div>';} 
       $response = ob_get_contents(); 
        ob_end_clean(); 

        echo $response; 

        die(1); 

そして、ここでは私のディレクトリページから機能ですfunctions.phpセクション。私はそれを修正しようとしました。誰が何が起こっているか考えているのですか?

答えて

5

問題は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)は両方とも同じである必要があります。

Updateへ:

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

おかげで、これが問題でした。このような小さな問題を解決するために、長い時間をかけてくれました! –

関連する問題