AJAX 为 WordPress 帖子加载更多内容

Posted

技术标签:

【中文标题】AJAX 为 WordPress 帖子加载更多内容【英文标题】:AJAX Load More For WordPress posts 【发布时间】:2021-08-19 19:35:51 【问题描述】:

我有一个。在 *** 上寻找答案,我找到了一些,但不幸的是它们不能满足我的需求,这就是我发布自己的原因。如果有人可以帮助我,那就太好了,因为我是 Ajax 的新手。我在 index.php 默认模板中使用默认的 WordPress 帖子类型。

下面是我输出帖子的 html 代码:

<?php
    $args = array(
        'post_type' => 'post',
        'posts_per_page' => 3,
    );

    $loop = new WP_Query($args);
    while ($loop->have_posts()) : $loop->the_post();
?>

<div class="col-12 col-md-6 col-xl-4 single_news_item">
    <a href="<?php the_permalink(); ?>" title="Click here for our <?php the_title(); ?> post">
        <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); ?>
        <div class="bg_image" style="background-image: url('<?php echo $image[0]; ?>');"></div>
        <div class="content">
            <p class="date"><?php $date = get_the_date('d / m / y'); echo $date; ?></p>
            <h2><?php the_title(); ?></h2>
        </div>
    </a>
</div>

<?php
    endwhile;
    wp_reset_postdata();
?>

这就是我所拥有的。本质上,我需要一个“加载更多”按钮或链接,然后加载接下来的 3 个帖子,依此类推,直到没有帖子可以加载。任何帮助将不胜感激。

谢谢!

【问题讨论】:

您对此有何疑问?到目前为止,您尝试过什么来解决它?你被困在哪里了? 我的问题是如何使用 Ajax 创建加载更多功能来加载更多 WordPress 帖子。 请通过编辑为您的问题添加所有说明,以及您解决问题的尝试 这可能有帮助吗? ***.com/questions/31587210/… 还是这个? ***.com/questions/33999193/… 【参考方案1】:

您需要添加一个输入字段来保存偏移量,一旦用户单击按钮,这里是代码。 注意:您应该根据需要对其进行修改。

在你获取数据的循环末尾添加这个

<div class="col-md-12 col-sm-12 col-xs-12">
    <input type="hidden" id="offset" value="10">
    <a class="btn btn-primary text-white load_more" id="load_using_ajax">Load More</a>
    <p id="test2"></p>
</div>

在js中添加这段代码,根据自己的需要修改



$(document).on('click','#load_using_ajax',function(e)
    e.preventDefault();
    var button = $(this);
    var category = $('.active').data('category');
    var offset = parseInt($("#offset").val());

    $.ajax(
        url: wpAjax.ajaxUrl,
        type: 'post',
        data: 
            category: category,
            offset:offset,
            action: 'load_more_posts',
        ,
        error : function(result)
            console.log(result);
        ,
        success : function(result)
        if(result)
            $("#offset").val(offset+10);
            $('.append-ajax-release').append(result);
           
        else
            $("test2").append = 'No more Data Found';
        
        
        
    ); 
);


将此添加到您需要根据需要修改的主题功能文件中


add_action('wp_ajax_nopriv_load_more_posts', 'load_more_posts');
add_action('wp_ajax_load_more_posts', 'load_more_posts');

function load_more_posts()

    $offset = $_POST['offset'];
    $category = $_POST["category"];
    $args = array(
        'order' => 'DESC',
        'post_status' => 'publish',
        'post_type' => 'post',
        'posts_per_page' =>  10,
        'offset' => $offset,
    );

    $query = new WP_Query();
    $query->query($args);
    if ($query->have_posts()) :
        while ($query->have_posts()) : $query->the_post(); ?>

        <div class="row col-12 pres-s-releases-wrapper mt-5 mb-3 ml-0 ">
            <?php the_title(); ?>
        </div>
        <?php
        endwhile;
    endif;
    wp_reset_postdata();



【讨论】:

以上是关于AJAX 为 WordPress 帖子加载更多内容的主要内容,如果未能解决你的问题,请参考以下文章

在 WordPress 中加载更多帖子 Ajax 按钮

使用 AJAX 将 Wordpress 帖子内容加载到 DIV

Wordpress - 如何通过 AJAX 获取更多帖子?

点击加载更多帖子wordpress [关闭]

php WordPress由AJAX加载帖子

使用 ajax 通过 WordPress 菜单在 div 中按类别加载最新帖子