创建按日期对帖子进行排序的自定义存档模板

时间:2020-06-25 作者:osarusan

我的网站的默认存档排序设置为按字母顺序,我对此很满意。然而,我想创建一个自定义页面模板,这样我也可以有一个归档页面,它可以按日期对所有帖子进行排序。

我正在使用一个自定义主题,这使它比我预期的更复杂。标准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(); 

?>

1 个回复
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;
};
在新页面的顶部尝试此操作。我还没有测试,所以如果有任何问题或不起作用,请在这里回复

相关推荐

permalinks issue and archives

我对运行在WP 3.3上的一个站点有一个问题,当我们通过“/%post\\u id%/%postname%/”使永久链接成为任何内容时,归档页面会断开并变成404。经过一些研究,我明白了为什么从性能的角度来看,这不是一个好的做法,所以我尝试了建议的备选方案:“/%year%/%postname%/”和“/%post\\u id%/%postname%/”这两个建议都有效,只是只有使用post\\u id的建议,归档URL才会变成“/date/2012/11/”,并被找到。根据permalink的任何其他建