wordpress - 如何在自定义帖子类别页面模板上设置 post_per_page?
问题描述
我为包含自定义帖子字段的帖子类别页面创建了一个自定义模板。这是一个“事件”页面,我在其中隐藏了过去的帖子 (event_date_end)。现在的问题是“post_per_page”不起作用。我认为它在某种程度上继承了主题,最多 8 个帖子。我想显示所有帖子(过去的事件除外)。
/*
Events Category Template
*/
// get posts
$posts = array(
'posts_per_page' => -1,
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'meta_value',
'meta_key' => "event_date_end",
'meta_compare' => '>=',
'meta_value' => date("Ymd"),
'orderby' => 'meta_value_num',
'order' => 'ASC',
);
$posts=get_posts($posts);
get_header(); ?>
<div id="main-content">
<div class="container">
<h1 class="cat-title"><?php echo single_cat_title(); ?></h1>
<div id="content-area" class="clearfix">
<div id="left-area">
<?php
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<!-- Divi Library for Events-->
<?php echo do_shortcode('[et_pb_section global_module="2564"][/et_pb_section]');?>
<?php
endwhile;
if ( function_exists( 'wp_pagenavi' ) )
wp_pagenavi();
// else
// get_template_part( 'includes/navigation', 'index' );
// else :
// get_template_part( 'includes/no-results', 'index' );
endif;
?>
</div> <!-- #left-area -->
<?php get_sidebar(); ?>
</div> <!-- #content-area -->
</div> <!-- .container -->
</div> <!-- #main-content -->
<?php
get_footer();
我也尝试将下面的代码添加到 functions.php ,它有效,但它没有隐藏过去的事件(它实际上在底部添加了空条目):
// Increase limit of posts on Events/Agenda pages
add_filter('pre_get_posts', 'posts_in_category');
function posts_in_category($query){
if ($query->is_category) {
if (is_category('agenda')) {
$query->set('posts_per_archive_page', -1);
}
if (is_category('agenda-fr')){
$query->set('posts_per_archive_page', -1);
}
}
}
解决方案
似乎您并没有告诉您的帖子循环使用获取的帖子,而是他们正在使用最初由您的主题获取的全局帖子。
试试这个小修复:
if ( count($posts) > 0 ) : foreach ( $posts as $post ) : setup_postdata( $post );
// Your code here
endforeach; endif;
这样,您就可以设置循环以使用get_posts()
查询中的帖子。
循环完成后,您可以重置全局帖子数据以再次使用原始帖子查询,wp_reset_postdata();
一般来说,在自定义循环完成后添加它是一种很好的做法。
推荐阅读
- php - 需要 Composer 在 cPanel 中添加 Mailgun?
- javascript - 第 3 方身份验证重定向相同域的 AJAX 调用
- python - 如何使用 selenium 和 Python 根据 html 从 span 标签中提取文本
- python - 了解 TensorFlow 检查点加载?
- oracle - 根据用户过滤交互式报表中的数据
- asp.net - 在 ASP .NET Core 2.1 Web Api 中启用 CORS
- java - 将选定的文本文件数据插入 jtable
- android - android studio avd manager 无效选项——'-enable-whpx'
- android - 如何在 Android 上使用应用程序运行 react-native(使用 CRNA)
- android-studio - 应用程序元素未显示在设计预览中