Order posts by date

时间:2012-03-31 作者:Christina

我是一个女孩,请原谅我的英语。也许这很容易,但我却不知道这一点。

但问题是

我想在主页上输出最近3天的帖子。

像这样:

30/03/12
职位1

职位2

岗位3

29/03/12
职位1

职位2

岗位3

28/03/12
职位1

职位2

岗位3

我试过:

$loopday = \'\';
if ( have_posts() ) : while ( have_posts() ) : the_post();
  if ($loopday !== get_the_time(\'D M j\')) {
    $loopday = get_the_time(\'D M j\');
    echo $loopday;
  }
  the_title();
  the_content();
endwhile; endif;
但该代码仅订购最新的10篇帖子。例如:

2012年3月30日,我有5个职位

2012年3月29日,我有4个职位

2012年3月28日,我有3个职位

因此,第三天缺少2个帖子。

我还想在归档页面上使用它。

每页3天。

在第2页,接下来的3天。

我真的没希望了。。

xx号

1 个回复
SO网友:soulseekah

三个回路

http://codex.wordpress.org/Class_Reference/WP_Query#Time_Parameters

$time = time();

foreach ( range( 0, 2 ) as $yesterday ):

    // get relative time offset by $yesterday days
    $rel_time = strtotime( "-$yesterday days", $time );

    // get the digits
    $year = date( \'Y\', $rel_time );
    $day = date( \'d\', $rel_time );
    $month = date( \'m\', $rel_time );

    // get the posts
    foreach ( get_posts( \'year=\' . $year . \'&monthnum=\' . $month . \'&day=\' . \'$day&posts_per_page=3\' ) as $post ):
        setup_postdata( $post );

        the_title();
        the_content();
    endforeach;

endforeach;
您还可以围绕$time 以其他更有效的方式。记住3个循环=3个数据库查询。

SQL

http://codex.wordpress.org/Class_Reference/wpdb

global $wpdb;
$sql = "SELECT * FROM `$wpdb->posts` WHERE 1=0";

$time = time();

for ( $i = 0; $i < 3; $i++ ) {
    $time = strtotime( "-1 day", $time ); // deduct one day every time

    $year = $wpdb->escape( date( \'Y\', $time ) );
    $day = $wpdb->escape( date( \'d\', $time ) );
    $month = $wpdb->escape( date( \'m\', $time ) );

    $sql .= " OR `ID` IN ( SELECT `ID` FROM `$wpdb->posts` WHERE YEAR(`post_date`) = \'$year\' AND MONTH(`post_date`) = \'$month\' AND DAY(`post_date`) = \'$day\' LIMIT 3)";
}

foreach( $wpdb->get_results( $sql, OBJECT_K ) as $post ):
    setup_postdata( $post );
    // ...display stuff
endforeach;
这会导致如下结果:

SELECT *
FROM `wp_posts`
WHERE 1=0
    OR `ID` IN (
        SELECT `ID`
        FROM `wp_posts`
        WHERE YEAR(`post_date`) = \'2012\'
            AND MONTH(`post_date`) = \'03\'
            AND DAY(`post_date`) = \'30\'
        LIMIT 3)
    OR `ID` IN (
        SELECT `ID`
        FROM `wp_posts`
        WHERE YEAR(`post_date`) = \'2012\'
            AND MONTH(`post_date`) = \'03\'
            AND DAY(`post_date`) = \'29\'
        LIMIT 3)
    OR `ID` IN (
        SELECT `ID`
        FROM `wp_posts`
        WHERE YEAR(`post_date`) = \'2012\'
            AND MONTH(`post_date`) = \'03\'
            AND DAY(`post_date`) = \'28\'
        LIMIT 3)
大查询,包含3个子查询。多毛的

转义计数器

$seendays = array(); // keep track of the day numbers

if ( have_posts() ) : while ( have_posts() ) : the_post();
    if ( isset( $seendays[get_the_date( \'Y-m-d\' )] ) && $seendays[get_the_date( \'Y-m-d\' )] > 3 ) continue;

    $seendays[get_the_date( \'Y-m-d\' )] = isset( $seendays[get_the_date( \'Y-m-d\' )] ) ? $seendays[get_the_date( \'Y-m-d\' )] + 1 : 1;

    // ...display stuff
endif;
这三种方法都是非常原始的,需要在这里和那里进行一些微调。希望这有帮助。

结束

相关推荐

sub posts to parent post

如何制作类似此示例的子帖子http://www.samsung.com/us/mobile/cell-phones/SGH-I717RWAATT概述功能规格库。。。。与链接结构一样。。。。手机/SGH-I717RWAATT-features。。。。手机/SGH-I717RWAATT-specs找不到任何插件或执行此操作的东西!谢谢