通过AJAX显示字压最后的帖子

我正在建立一个每小时上传一次帖子的新闻博客。我创建了一个短代码,在主页上显示最后15个帖子。我的问题是服务器缓存需要每小时删除一次。所以我决定通过AJAX提供帖子,所以这个区域将获得每个页面加载的最新帖子。


我找到了这个答案,并将其与我的代码相结合。


我的问题是它显示所有帖子,而不仅仅是15个。


菲律宾比索:


function get_ajax_posts() {

// Query Arguments

    $args = array(

    'post_type' => array('post'),

    'post_status' => array('publish'),

    'posts_per_page'  => 15,

    'nopaging' => true,

    'order'    => 'DESC',

    'orderby'    => 'date',

    );


    $ajaxposts = new WP_Query( $args );

    $response = '';


    if ( $ajaxposts->have_posts() ) {

            while ( $ajaxposts->have_posts() ) {

                $ajaxposts->the_post();

                $response .= get_template_part( 'template-parts/content-archive');

            }

   }    else {

             $response .= get_template_part('none');

     }


    echo $response;

        exit; // leave ajax call

}


// Fire AJAX action for both logged in and non-logged in users

add_action('wp_ajax_get_ajax_posts', 'get_ajax_posts');

add_action('wp_ajax_nopriv_get_ajax_posts', 'get_ajax_posts');

断续器


 $.ajax({

    type: 'POST',

    url: '<?php echo admin_url('admin-ajax.php');?>',

    dataType: "html",

    data: { action : 'get_ajax_posts' },

    success: function( response ) {

        $( '.home-hot-flights' ).html( response ); 

          //hot-flights

        var hot_flights_item = $(".home-hot-flights article").width() + 17;

        $(".art-move-left").click(function () { 

          $('.move-right').addClass('show-move-right');

          var leftPos = $('.home-hot-flights').scrollLeft();

          $(".home-hot-flights").animate({scrollLeft: leftPos - hot_flights_item}, 200);

        });


        $(".art-move-right").click(function () { 

          var leftPos = $('.home-hot-flights').scrollLeft();

          $(".home-hot-flights").animate({scrollLeft: leftPos + hot_flights_item}, 200);

        });

    }

});


蛊毒传说
浏览 118回答 2
2回答

繁星淼淼

这可能有助于您:分页参数(nopping(布尔值) – 显示所有帖子或使用分页。默认值为“false”,请使用分页。)通过禁用分页来显示所有帖子:$query&nbsp;=&nbsp;new&nbsp;WP_Query(&nbsp;array(&nbsp;'nopaging'&nbsp;=>&nbsp;true&nbsp;)&nbsp;);我认为如果要使用显示一定数量的帖子,则应删除该参数。posts_per_page

狐的传说

试试这段代码 我已经编辑了你的代码 请看下面function get_ajax_posts() {// Query Arguments$args = array('post_type' => array('post'),'post_status' => array('publish'),'posts_per_page'&nbsp; => 15,'order'&nbsp; &nbsp; => 'DESC','orderby'&nbsp; &nbsp; => 'date',);wp_reset_query();$ajaxposts = new WP_Query( $args );$response = '';if ( $ajaxposts->have_posts() ) {&nbsp; &nbsp; &nbsp; &nbsp; while ( $ajaxposts->have_posts() ) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ajaxposts->the_post();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $response .= get_template_part( 'template-parts/content-archive');&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;}&nbsp; &nbsp; else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$response .= get_template_part('none');&nbsp;}echo $response;&nbsp; &nbsp; exit; // leave ajax call}// Fire AJAX action for both logged in and non-logged in users&nbsp; add_action('wp_ajax_get_ajax_posts', 'get_ajax_posts');&nbsp; add_action('wp_ajax_nopriv_get_ajax_posts', 'get_ajax_posts');如果两个循环数据被覆盖,那么,我的第一个代码wp_reset_query()是不正确的。如果您使用的是WP_Query,那么wp_reset_postdata() //remove wp_reset_query() which is used for wp_query()应该在 WHILE 循环结束后使用,这意味着在两个循环中,您必须具有wp_reset_postdata()&nbsp; // use this at both loops
打开App,查看更多内容
随时随地看视频慕课网APP