2017-11-16 6 views
0

私は 'award'というカスタム投稿タイプを作成しました。私はarchive-award.phpにおり、私は '賞'の投稿のリストを表示しています。ここまでは順調ですね。AJAXで動作しないカスタム投稿タイプのクエリ

今度は、[詳細をロード]ボタンをクリックして、次の投稿をAJAX経由で取得します。これはAJAXスクリプトに渡すアクションです:

function load_next_award_posts() { 

    $args = array(
     'paged' => 2, 
     'post_type' => 'award', 
     'post_status' => 'publish' 
    ); 

    $next_posts = new WP_Query($args); 

    if($next_posts->have_posts()) : 
     while($next_posts->have_posts()) : $next_posts->the_post(); 
      echo '<p>Hello</p>'; 
     endwhile; 
    endif; 

    wp_reset_postdata(); 
    die(); 

} 

残念ながら、クエリは結果を返しません。代わりにpost_typeをデフォルトのpostまたはpageに変更すると、すべて正常に動作します。どうしたの?カスタム投稿タイプでクエリが機能しないのはなぜですか?

+0

あなたはこれまで、あなたのAJAX呼び出しアクションとAjaxコードを追加することができます。 –

+0

@SunilDora私のajax呼び出しとコードは問題ありません。そうでなければ 'post_type'を' post'や 'page'に変更すると結果が得られません。この問題は、カスタム投稿タイプを照会するときにのみ発生するため、関連するものでなければなりません。 – grazianodev

+0

https://premium.wpmudev.org/blog/load-posts-ajax/この記事を読むだけで、投稿タイプの世話をする必要はありません。それはあなたにとって完璧なことです。 –

答えて

0
<a id="more_posts" href="#">Load More</a> 

あなたfile.js

var ajaxUrl = "<?php echo admin_url('admin-ajax.php')?>"; 
    var page = 1; // What page we are on. 
    var ppp = 10; // Post per page 

    $("#more_posts").on("click",function(){ 
     $("#more_posts").attr("disabled",true); 
     $.post(ajaxUrl, { 
      action:"more_post_ajax", 
      offset: (page * ppp) + 1, 
      ppp: ppp 
     }).success(function(posts){ 
      page++; 
      $(".name_of_posts_class").append(posts); 
      $("#more_posts").attr("disabled",false); 
     }); 

    }); 

</script> 

のfunctions.php

function more_post_ajax(){ 
    $offset = $_POST["offset"]; 
    $ppp = $_POST["ppp"]; 
    header("Content-Type: text/html"); 

    $args = array(
     'post_type' => 'award', 
     'posts_per_page' => $ppp, 
     'offset' => $offset, 
    ); 

    $loop = new WP_Query($args); 
    while ($loop->have_posts()) { $loop->the_post(); 
     the_content(); 
    } 

    exit; 
} 

add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax'); 
add_action('wp_ajax_more_post_ajax', 'more_post_ajax'); 
+0

あなたはその質問を読んだことがありますか? – grazianodev

+0

はい、あなたのarchive-award.phpファイルにこのスクリプトを追加してください。 – Sco

+0

デフォルトではpost_per_page = 10.10以上の賞がありますか? – Sco

関連する問題