为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
蛊毒传说 2022-09-17 15:37:16
我正在建立一个每小时上传一次帖子的新闻博客。我创建了一个短代码,在主页上显示最后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 usersadd_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);        });    }});
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这可能有助于您:

分页参数

(nopping(布尔值) – 显示所有帖子或使用分页。默认值为“false”,请使用分页。)

通过禁用分页来显示所有帖子:

$query = new WP_Query( array( 'nopaging' => true ) );

我认为如果要使用显示一定数量的帖子,则应删除该参数。posts_per_page


查看完整回答
反对 回复 2022-09-17
?
狐的传说

TA贡献1804条经验 获得超3个赞

试试这段代码 我已经编辑了你的代码 请看下面


function get_ajax_posts() {

// Query Arguments

$args = array(

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

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

'posts_per_page'  => 15,

'order'    => 'DESC',

'orderby'    => 'date',

);

wp_reset_query();

$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');

如果两个循环数据被覆盖,那么,我的第一个代码wp_reset_query()是不正确的。如果您使用的是WP_Query,那么


wp_reset_postdata() //remove wp_reset_query() which is used for wp_query()

应该在 WHILE 循环结束后使用,这意味着在两个循环中,您必须具有


wp_reset_postdata()  // use this at both loops


查看完整回答
反对 回复 2022-09-17
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信