我的网站的默认存档排序设置为按字母顺序,我对此很满意。然而,我想创建一个自定义页面模板,这样我也可以有一个归档页面,它可以按日期对所有帖子进行排序。
我正在使用一个自定义主题,这使它比我预期的更复杂。标准WP帮助教程似乎不适用于这里,或者至少我不知道在哪里。
这就是我的处境。我复制了主题的标准存档页面,并为其指定了自定义模板名称。然而,除此之外,我无法确定我将在何处进行编辑,以强制它按日期排序。
有人能帮忙吗?
<?php
/**
* Template Name: Archive (Sorted by Newest)
* The template for a custom archive page.
*/
get_header(); ?>
<?php the_archive_title(\'<h1>\',\'</h1>\'); ?>
<section class="content">
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<article <?php post_class(\'grid_block index box\'); ?>>
<?php if( get_theme_mod( \'crissy_post_link\', \'block_link\' ) == (\'block_link\')) { ?>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php if( get_theme_mod( \'crissy_feat_img\' ) == (\'rectangle_no_margins\')) { get_template_part(\'feat_img\'); } ?>
<div class="wrapper">
<?php
if( get_theme_mod( \'crissy_feat_img\', \'circle\' ) != (\'rectangle_no_margins\')) { get_template_part(\'feat_img\'); }
get_template_part(\'content\', get_post_format()); // content depending on post format
get_template_part(\'article_icon\'); // article icon at the bottom
?>
</div>
</a>
<?php } else { ?>
<?php if( get_theme_mod( \'crissy_feat_img\' ) == (\'rectangle_no_margins\')) { get_template_part(\'feat_img\'); } ?>
<div class="wrapper">
<?php
if( get_theme_mod( \'crissy_feat_img\' ) != (\'rectangle_no_margins\')) { get_template_part(\'feat_img\'); }
get_template_part(\'content\', get_post_format()); // content depending on post format
get_template_part(\'article_icon\'); // article icon at the bottom
?>
</div>
<?php } ?>
</article>
<?php endwhile; endif; ?>
</section>
<?php
get_template_part( \'posts_nav\' );
get_footer();
?>
SO网友:mozboz
我已经从here, 他们正在以不同的方式更改顺序,但这应该对您有用。它使用pre_get_posts
钩子仅更改存档页面的顺序。
add_action( \'pre_get_posts\', \'my_change_sort_order\');
function my_change_sort_order($query){
if(is_archive()):
//If you wanted it for the archive of a custom post type use: is_post_type_archive( $post_type )
//Set the order ASC or DESC
$query->set( \'order\', \'ASC\' ); // ASC = oldest first, DESC = newest first
//Set the orderby
$query->set( \'orderby\', \'date\' );
endif;
};
在新页面的顶部尝试此操作。我还没有测试,所以如果有任何问题或不起作用,请在这里回复