javascript - 通过 AJAX 显示 WordPress 最后的帖子

标签 javascript php jquery ajax wordpress

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

我找到了这个answer并将其与我的代码结合起来。

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

PHP:

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

JS:

 $.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);
        });
    }
});

最佳答案

这可能对您有帮助:

Pagination parameters

(nopaging (boolean) – show all posts or use pagination. Default value is ‘false’, use paging. )

Display all posts by disabling pagination:

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

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

关于javascript - 通过 AJAX 显示 WordPress 最后的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60170111/

相关文章:

javascript - jquery 因下拉菜单选择操作而失败

javascript - 如何在 webpack 构建期间转换 HTML 文档中的脚本标签?

php - 将数据从输入表单传递到 Laravel 中的 ajax

javascript - 如何在加载另一段动态 HTML 后附加动态 HTML?

javascript - 从面板中删除选定的项目 -JS

javascript - 不理解碰撞检测代码

javascript - 有没有办法使用包含变量名称的字符串来访问 javascript 变量?

javascript - 将 PHP 字符串变量发送到 Javascript 字符串变量

php - 使用 PHP MYSQL 搜索查询搜索搜索的每个单词

c# - jquery ajax 调用可以在本地主机上运行,​​但不能在实时服务器上运行