2017-09-16 11 views
1

私は、ワードプレスでカスタムタイプの投稿を表示しているページがあります。基本的には、Ajaxを使った分類法に基づいて投稿を検索するためのチェックボックスがあります。しかし、結果はシークレットモードとFirefoxで0を示しています。しかし、私のGoogle Chromeで、それは正常に動作しています。私はdie()を使用しており、ajaxコールバックが適切に定義されています。私が行方不明になっていることを確認してください。 、なぜAjax検索は0を返しますか?

(function($) { 


$(".chb1").change(function() { 
$(".chb1").not(this).prop('checked', false); 
}); 

$(".chb2").change(function() { 
$(".chb2").not(this).prop('checked', false); 
}); 

$(".chb3").change(function() { 
$(".chb3").not(this).prop('checked', false); 
}); 


$('#myForm input').on('change', function() { 
    skill = $('input[name=skill]:checked', '#myForm').val(); 
    type = $('input[name=type]:checked', '#myForm').val(); 
    certification = $('input[name=certification]:checked', '#myForm').val(); 
    $.ajax({ 
     type: 'post', 
     url: ajax_url, 
     data: { action: 'search', skill : skill, type : type, certification : certification }, 
     success: function(response){ 
      $('.article').html(response); 
      //console.log(response); 
     } 
    }) 
}); 

})(jQuery); 

それは私のブラウザでは正常に動作しますが、ChromeのシークレットモードやFirefoxなどの他のブラウザにされています。私は次のようにfunctions.phpに含まれているajax.phpファイル、

<?php 
add_action('wp_head', 'wp_ajax_url'); 
add_action('wp_enqueue_scripts', 'include_ajax_js'); 

function wp_ajax_url(){ 
    $script = '<script>'; 
    $script .= 'var ajax_url = " ' . admin_url('admin-ajax.php') . ' " ; ' ; 
    $script .= '</script>'; 
    echo $script; 
} 

function include_ajax_js() { 
    wp_enqueue_script('ajax_js', get_template_directory_uri() . '/inc/jquery.js', array('jquery'), null, true); 
} 

add_action('wp_ajax_search', 'search'); 
add_action('wp_ajax_no_priv_search', 'search'); 

function search(){ 
    $skill = $_POST['skill']; 
    $type = $_POST['type']; 
    $certification = $_POST['certification']; 
    //echo $skill, $type, $certification; die(); 

    if(!empty($skill) && !empty($type) && !empty($certification)){ 
    $args = array(
     'post_type' => 'myguncourse', 
     'tax_query' => array(
      'relation' => 'AND', 
      array(
       'taxonomy' => 'skilllevel', 
       'field' => 'slug', 
       'terms' => array($skill), 
      ), 
      array(
       'taxonomy' => 'firearmtype', 
       'field' => 'slug', 
       'terms' => array($type), 
      ), 
      array(
       'taxonomy' => 'certification', 
       'field' => 'slug', 
       'terms' => array($certification), 
      ), 
     ), 
    ); 

} else if (!empty($skill) && !empty($type)) { 
    $args = array(
     'post_type' => 'myguncourse', 
     'tax_query' => array(
      array(
       'taxonomy' => 'skilllevel', 
       'field' => 'slug', 
       'terms' => array($skill), 
      ), 
      array(
       'taxonomy' => 'firearmtype', 
       'field' => 'slug', 
       'terms' => array($type), 
      ), 
     ), 
    ); 
} else if (!empty($skill) && !empty($certification)) { 
    $args = array(
     'post_type' => 'myguncourse', 
     'tax_query' => array(
      array(
       'taxonomy' => 'skilllevel', 
       'field' => 'slug', 
       'terms' => array($skill), 
      ), 
      array(
       'taxonomy' => 'certification', 
       'field' => 'slug', 
       'terms' => array($certification), 
      ), 
     ), 
    ); 
} else if (!empty($type) && !empty($certification)) { 
    $args = array(
     'post_type' => 'myguncourse', 
     'tax_query' => array(
      array(
       'taxonomy' => 'firearmtype', 
       'field' => 'slug', 
       'terms' => array($type), 
      ), 
      array(
       'taxonomy' => 'certification', 
       'field' => 'slug', 
       'terms' => array($certification), 
      ), 
     ), 
    ); 
} else if (!empty($skill)) { 
    $args = array(
     'post_type' => 'myguncourse', 
     'tax_query' => array(
      array(
       'taxonomy' => 'skilllevel', 
       'field' => 'slug', 
       'terms' => array($skill), 
      ), 

     ), 
    ); 
} else if (!empty($type)) { 
    $args = array(
     'post_type' => 'myguncourse', 
     'tax_query' => array(
      array(
       'taxonomy' => 'firearmtype', 
       'field' => 'slug', 
       'terms' => array($type), 
      ), 

     ), 
    ); 
} else if (!empty($certification)) { 
    $args = array(
     'post_type' => 'myguncourse', 
     'tax_query' => array(
      array(
       'taxonomy' => 'certification', 
       'field' => 'slug', 
       'terms' => array($certification), 
      ), 

     ), 
    ); 
} else { 
    $args = array(
     'post_type' => 'myguncourse', 
    ); 
} 

    $query = new WP_Query($args); 

    if($query->have_posts()) : 
    while ($query->have_posts()) : $query->the_post(); 
    ?> 
    <h4 style="display: inline;"><?php the_title();?></h4> 
    <h5 style="display:inline;" class="pull-right"></h5> 
    <p><?php the_content();?></p> 
    <a href="<?php the_permalink();?>" align="right"><b>VIEW THIS COURSE </b></a><hr> 

    <?php 
    endwhile; endif; 
    //wp_reset_query(); 
    die();  
} 
?> 

Andmyのjqueryのファイルである必要がありそれは0を返しています。私の友人のGoogle Chromeでも0を返しています。あなたは間違いを推測してください。私のブラウザでは、検索は正常に動作しています。

+0

https://www.google.co.uk/search?q=ajax+returns+0&oq=ajax+returns+0&aqs=chrome..69i57j0l5.1693j0j7&sourceid=chrome&ie=UTF-8 - これらのうちのどれですか? – ADyson

+0

いいえ.... intrestingly、私のクロームブラウザで、それは働いています。しかし、他のブラウザでは0になっています。また、友達のGoogle Chromeブラウザで0を返しています。しかし、それは私のクロームブラウザ(シークレットではない)で正常に動作しています。 – Amit

+1

'wp_ajax_no_priv_search' - > 'wp_ajax_nopriv_search' – user8262086

答えて

3

はい!あなたはここでミスをしています:

add_action('wp_ajax_no_priv_search', 'search'); 

したがって、ログインしていないユーザーは結果を見ることができません。それを訂正する必要があります:

add_action('wp_ajax_nopriv_search', 'search'); 

ログインしていないユーザーのためにnoprivが使用されているため、結果が表示されませんでした。

関連する問題