gpt4 book ai didi

php - 如何在自定义 WP_Query Ajax 上实现分页

转载 作者:行者123 更新时间:2023-12-01 01:55:09 24 4
gpt4 key购买 nike

我想使用 Ajax 在自定义循环中对我的 WordPress 帖子进行分页,因此当我单击“加载”按钮时,将会显示更多帖子。

我的代码:

<?php 
$postsPerPage = 3;
$args = array(
'post_type' => 'post',
'posts_per_page' => $postsPerPage,
'cat' => 1
);
$loop = new WP_Query($args);

while ($loop->have_posts()) : $loop->the_post();
?>
<h1><?php the_title(); ?></h1>
<p>
<?php the_content(); ?>
</p>
<?php
endwhile;
echo '<a href="#">Load More</a>';
wp_reset_postdata();
?>

此代码不分页。有更好的方法吗?

最佳答案

Load More 按钮需要向服务器发送ajax 请求,并且可以使用 jQuery 或纯 JavaScript 将返回的数据添加到现有内容中。假设您使用 jQuery,这将是起始代码。

自定义 Ajax 处理程序(客户端)

<a href="#">Load More</a>

更改为:

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

Javascript: - 将其放在文件底部。

//</script type="text/javascript">

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

$("#more_posts").on("click",function(){ // When btn is pressed.
$("#more_posts").attr("disabled",true); // Disable the button, temp.
$.post(ajaxUrl, {
action:"more_post_ajax",
offset: (page * ppp) + 1,
ppp: ppp
}).success(function(posts){
page++;
$(".name_of_posts_class").append(posts); // CHANGE THIS!
$("#more_posts").attr("disabled",false);
});

});

//</script>

自定义 Ajax 处理程序(服务器端)PHP - 将其放入functions.php 文件中。

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

$args = array(
'post_type' => 'post',
'posts_per_page' => $ppp,
'cat' => 1,
'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');

关于php - 如何在自定义 WP_Query Ajax 上实现分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29595391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com