首页 > 解决方案 > 如何在本周和下周按日期对帖子进行排序

问题描述

因此,对于 wordpress 网站,我有一个日历页面,我想在其中显示自定义帖子类型的日期。我想实现以下目标:https ://jsfiddle.net/8vcyk3h5/

    $today = date('Ymd');

    $args = array(
        'post_type'        => 'events',
        'post_status'      => 'publish',
        'posts_per_page'   => -1,
        'meta_query'       => array(
            array(
                'key'       => 'date',
                'compare'   => '>=',
                'value'     => $today
            )
        ),
        'meta_key'         => 'datum',
        'orderby'          => 'meta_value',
        'order'            => 'ASC'
    );

    $posts_array = get_posts($args);

    if($posts_array) {

        foreach($posts_array as $post) {

            $id = $post->ID;

            $firstWeekDay = date('Ymd', strtotime('monday this week'));
            $lastWeekDay = date('Ymd', strtotime('monday next week'));

            $event = get_field('datum', $id);

            if($event > $firstWeekDay && $event < $lastWeekDay) {
                echo 'all this weeks events!';
            }

        }

    }

这就是我到目前为止所拥有的。我将如何实现JSFiddle示例?

因此,我需要将本周发生的事件与下周发生的事件和未来的事件放在一个单独的 div 中。

标签: phpwordpress

解决方案


这可以更紧凑,但是这可能是什么?希望有所帮助

我没有测试错误,但重点是:

制作一个要显示的事件数组,然后用几个循环显示它们。

$today = date('Ymd');

$args = array(
    'post_type'        => 'events',
    'post_status'      => 'publish',
    'posts_per_page'   => -1,
    'meta_query'       => array(
        array(
            'key'       => 'date',
            'compare'   => '>=',
            'value'     => $today
        )
    ),
    'meta_key'         => 'datum',
    'orderby'          => 'meta_value',
    'order'            => 'ASC'
);

$posts_array = get_posts($args);

if($posts_array) {

    $lists = array();

    foreach($posts_array as $post) {

        $id = $post->ID;

        $firstWeekDay = date('Ymd', strtotime('monday this week'));
        $lastWeekDay = date('Ymd', strtotime('monday next week'));

        $event = get_field('datum', $id);

        if($event > $firstWeekDay && $event < $lastWeekDay) {
            //echo 'all this weeks events!';
            $lists['thisweek'][] = $id;
        } elseif($event > date('Ymd', strtotime('monday next week')) && $event < date('Ymd', strtotime('+1 weeks monday'))) {
            //echo 'all next weeks events!';
            $lists['nextweek'][] = $id;
        } elseif($event > date('Ymd', strtotime('+1 weeks monday'))) {
            //echo 'all future events!';
            $lists['future'][] = $id;
        }

    }
    echo "<ul>";
    foreach($lists['thisweek'] as $post){
        echo "<li>".$post->TITLE."</li>";
    }
    echo "</ul>";
    echo "<ul>";
    foreach($lists['nextweek'] as $post){
        echo "<li>".$post->TITLE."</li>";
    }
    echo "</ul>";
    echo "<ul>";
    foreach($lists['future'] as $post){
        echo "<li>".$post->TITLE."</li>";
    }
    echo "<ul>";
}

推荐阅读