【发布时间】:2021-04-08 22:10:47
【问题描述】:
这是我的分页代码。一切都很好,除了第 2 页之后,页面上的帖子数量不同。例如,它在第 1 页和第 2 页上返回 9、在第 3 页上返回 8、在第 4 页上返回 7、在第 5 页上返回 6 ......这个数字只会越来越小。发生这种情况有原因吗?我已尝试更改参数,但到目前为止没有任何帮助。
<?php
if (!defined('ABSPATH')) exit;
// Exit if accessed directly
/**
* @param $posts array
* @param $every_eighth_full_width boolean
*/
?>
<?if ($posts) :?>
<div class="row new-post-list">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 'post_type'=> 'post', 'post_status' => 'publish','orderby' => 'post_date',
'order' => 'desc', 'posts_per_page' => 9, 'paged' => $paged );
$query = new WP_Query($args);
$counter = 1;
while ( $query->have_posts() ) : $query->the_post();
?>
<?php
$hide = get_field('hide_this_blog_post_from_the_main_blog_page', $post->ID);
if($hide)
continue;
?>
<div class="col-12 mb-2 <?= ($every_seventh_full_width && $counter%7 == 0) ? '' : 'col-md-6' ?>">
<?php include(locate_template('/templates/posts/new-post-teaser.php')); ?>
</div>
<?php
$counter++;
endwhile;?>
<div class="col-12 new-blog-pagination">
<?php
echo paginate_links(array(
'total' => $query->max_num_pages,
'prev_text' => '',
'next_text' => ''
));
?>
</div>
<?php wp_reset_postdata(); ?>
</div>
<?php endif; ?>
编辑:这就是我解决问题的方法:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 'post_type'=> array('post','guide'), 'post_status' => 'publish','orderby' => 'post_date',
'order' => 'desc', 'posts_per_page' => 9, 'paged' => $paged, 'meta_query' => array(
array(
'key' => 'hide_this_blog_post_from_the_main_blog_page',
'value' => '1',
'compare' => '<'
)
)
);
$query = new WP_Query($args);
$counter = 1;
while ( $query->have_posts() ) : $query->the_post();
?>
<div class="col-12 mb-2 <?= ($every_seventh_full_width && $counter%5 == 0) ? '' : 'col-md-6' ?>">
<?php include(locate_template('/templates/posts/new-post-teaser.php')); ?>
</div>
<?php
$counter++;
endwhile;?>
【问题讨论】:
-
嗯,这可能与您如何从输出部分的结果集中跳过帖子有关,基于
$hide包含的内容...... -
您应该首先阻止那些具有此特定元值的帖子在您的查询中被选中,而不是稍后才将它们过滤掉。 developer.wordpress.org/reference/classes/wp_query/…
-
@CBroe 谢谢,当我删除它时它起作用了。我将尝试找到排除这些帖子的解决方案
-
我发布该链接的目的是解释如何根据查询中的元值进行过滤。
-
@CBroe 谢谢!我设法解决了我的问题,现在效果很好:)
标签: php wordpress pagination