Show posts by quarter

时间:2016-08-23 作者:Robert Andrews

如何按季度列出作者的WordPress帖子author.php?

当前相关author.php 代码如下(贴子为自定义类型“press Attentions”,仅供参考)。

这将显示该作者所有帖子的单一列表。但我如何将此列表按季度标题分为多个部分,即“2015年第三季度”、“2015年第四季度”、“2016年第一季度”、“2016年第二季度”?

季度是从1月1日开始的四个三个月周期。

帖子应按与当前帖子相同的顺序出现,但按季度划分。因此,最新季度标题出现在顶部,以此类推。

    <!-- Press appearances -->
    <?php
      // Count press appearances
      $post_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = \'" . $curauth->ID . "\' AND post_type = \'pressmention\' AND post_status = \'publish\'");
    ?>
    <h5><?php echo \'<span class="label label-primary">\'.$post_count.\'</span>\'; ?> Media appearances:</h5>
    <table class="table table-striped table-sm">
      <tbody>
      <?php // Show custom post list - http://wordpress.stackexchange.com/questions/178739/displaying-custom-post-types-in-author-php
          $args = array(
          \'post_type\' => \'pressmention\' ,
          \'author\' => get_queried_object_id(), // this will be the author ID on the author page
          \'showposts\' => 200
      );
      $custom_posts = new WP_Query( $args );



      if ( $custom_posts->have_posts() ): while ( $custom_posts->have_posts() ) : $custom_posts->the_post();?>
      <tr>
        <!-- changed th, removed scope="row", was width="110" and "125" -->
        <td class="col-xs-2"><?php the_time(\'M d, Y\'); ?></td>
        <td class="col-xs-3"><img src="https://plus.google.com/_/favicon?domain=<?php echo get_post_meta( $post->ID,\'press_mention_information_publication-url\',true); ?>" alt="Publication"> <?php echo get_post_meta( $post->ID,\'press_mention_information_publication-name\',true); ?></td>
        <td class="col-xs-7"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a></td>
      </tr>
      <?php endwhile; else: ?>
          <!-- changed th, removed scope="row" -->
          <tr><td colspan="2">No posts.</td></tr>
      <?php endif; ?>
      </tbody>
    </table>

1 个回复
最合适的回答,由SO网友:birgire 整理而成

让我们定义一个助手函数,将月份映射到季度:

function wpse_get_month2quarter( $month )
{
    return ceil( $month / 3 );
}
然后,我们可以考虑如何处理集合中不是整数的输入值{1, ..., 12}.

ps:我从这个公式中得到了这个想法Excel blog 作者:Gašper Kamenšek

要获得循环中的四分之一,我们可以使用,例如:

echo wpse_get_month2quarter( get_the_date( \'n\' ) );

Example

这里有一个循环的想法:

if ( $custom_posts->have_posts() ) : 

    $prev = null;

    while ( $custom_posts->have_posts() ) : 

        $custom_posts->the_post();

        $current = sprintf( 
            \'%d Q%d\', 
            get_the_date( \'Y\' ), 
            wpse_get_month2quarter( get_the_date( \'n\' ) )
        );

        if( $prev !== $current )
        {
            printf( \'<tr><td colspan="3">%s</td></tr>\', $current );
            $prev = $current;
        }

        // ... etc ...
其中,我们每个季度注入一次部分,并假设查询是按日期排序的。

但有很多方法可以实现这一点。

如果可能,您应该尝试使用和修改主查询,通过pre_get_posts, 而不是引入另一个辅助查询

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果