Wordpress 在自定义帖子类型存档页面上按日期排序
Posted
技术标签:
【中文标题】Wordpress 在自定义帖子类型存档页面上按日期排序【英文标题】:Wordpress Order by date on custom post type archive page 【发布时间】:2016-02-10 19:21:40 【问题描述】:我有一个名为 city guide 的自定义帖子类型,我在 wordpress 中使用以下代码创建了一个存档页面。帖子显示但不按顺序显示。我需要日期和降序排序。当我从下面的代码中更改 $args orderby 和 order 时,它显示的是相同的。
<?php
$args = array( 'hide_empty' => false, 'orderby' => 'id', 'order' => 'ASC' );
$taxonomy = 'city-guide-category';
$tax_terms = get_terms( $taxonomy, $args );
foreach($tax_terms as $tt):
$cat_arr[] = $tt->term_id;
endforeach;
?>
<?php
global $wp_query, $paged;
if( get_query_var('paged') )
$paged = get_query_var('paged' );
else if ( get_query_var('page') )
$paged = get_query_var('page' );
else
$paged = 1;
?>
<?php $i=1; while( $wp_query->have_posts() ): $wp_query->the_post(); ?>
<?php get_template_part( 'templates/content-city-guide', get_post_format() ); ?>
<?php if( $i%2 == 0 && $i != $wp_query->post_count): ?>
<div class="clearfix visible-xs hidden-sm hidden-md hidden-lg"></div>
<?php endif; ?>
<?php if( $i%3 == 0 && $i != $wp_query->post_count): ?>
<div class="clearfix hidden-xs hidden-md hidden-lg"></div>
<?php endif; ?>
<?php if( $i%4 == 0 && $i != $wp_query->post_count): ?>
<div class="clearfix hidden-xs hidden-sm"></div>
<?php endif; ?>
<?php $i++; endwhile; ?>
</div>
我也试过了
<?php
$wp_query->set('orderby','date');
$wp_query->set('order','desc');
?>
之前和之后
<?php $i=1; while( $wp_query->have_posts() ): $wp_query->the_post(); ?>
这也不起作用。我错在哪里。请帮帮我。
我试过了
<?php
global $wp_query, $paged;
if( get_query_var('paged') )
$paged = get_query_var('paged' );
else if ( get_query_var('page') )
$paged = get_query_var('page' );
else
$paged = 1;
//ddbug( $wp_query->request );
$args = array(
'orderby' => 'date',
'order' => 'DESC',
);
$query = new WP_Query( $args ); ?>
<?php $i=1; while( $query->have_posts() ): $query->the_post(); ?>
<?php get_template_part( 'templates/content-city-guide', get_post_format() ); ?>
<?php if( $i%2 == 0 && $i != $query->post_count): ?>
<div class="clearfix visible-xs hidden-sm hidden-md hidden-lg"> </div>
<?php endif; ?>
<?php if( $i%3 == 0 && $i != $query->post_count): ?>
<div class="clearfix hidden-xs hidden-md hidden-lg"></div>
<?php endif; ?>
<?php if( $i%4 == 0 && $i != $query->post_count): ?>
<div class="clearfix hidden-xs hidden-sm"></div>
<?php endif; ?>
<?php $i++; endwhile; ?>
</div>
<?php if( $query->max_num_pages > 1) : ?>
<div class="more-posts-link-wrapper">
<?php next_posts_link(__('<span class="more-posts-text">More <i class="bits-arrow-down"></i></span><img src="' . get_stylesheet_directory_uri() . '/assets/img/ajax-loader.gif" class="ajax-loader" style="display:none;">','roots') ); ?>
</div>
<?php endif; ?>
</div>
</div>
它现在按日期显示,但是当我单击更多链接或下一页查看第二组帖子时,它显示的是同一组帖子。即使我转到第 12 页的分页,它们也会重复。 请帮忙。
【问题讨论】:
当您获得此代码时,在这里进行任何更改都为时已晚,除非您使用自定义循环。$wp_query
已经设置,并且已经运行。
我尝试了自定义循环,但分页似乎不起作用。请检查编辑的代码
【参考方案1】:
请参阅https://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters 了解更多信息。与您已经尝试过的略有不同,请尝试创建一个新的 WP Query 对象。
编辑以在 args 中包含分页参数,尝试类似
$paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
args = array(
'orderby' => 'date',
'order' => 'DESC',
'post_type' => 'post',
'posts_per_page' => 5,
'paged' => $paged
);
$query = new WP_Query( $args );
while ($query->have_posts())
// do stuff
【讨论】:
嗨,我已经添加了编辑后的代码。它正在工作,但分页似乎有一些问题。 我更新了帖子,看看它是否适合你。在原始查询参数中,只有 order by,但也需要分页。 在尝试使用分页而不是分页 (get_query_var('page')) 时是否有效? get_query_var('page') 我有一个 qick qn ,如何从上面的代码中只显示子页面并排除父页面。请帮助 见wordpress.stackexchange.com/questions/60292/…。我想这就是你要找的。该帖子建议将 'post_parent' => $post->ID 和 'post_type' => 'page' 添加到 args 数组中。以上是关于Wordpress 在自定义帖子类型存档页面上按日期排序的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress 为自定义帖子类型存档页面选择了错误的模板
如何为自定义帖子和分类法制作 Wordpress 存档页面?
php 在主博客和存档页面上显示WordPress自定义帖子类型
WordPress 自定义帖子类型存档-<帖子类型>.php 不起作用