使用IF语句在同一页面上升序和降序发布帖子

时间:2015-07-10 作者:ogmios

我需要能够在1页上显示事件列表。最上面的列表将用于即将发生的事件,并首先与最早的事件进行排序,第二个列表将用于过期/过去的事件,并与最新的事件进行排序。

示例:
即将举行的活动

2015年7月30日事件A•2015年9月2日事件Z•2015年12月9日事件G•过去的事件

2015年6月29日事件F,2015年5月5日事件X,2015年2月事件D,我不知道如何改变orderby 值来自DESCASC 在检查结束日期是否过期的IF语句中。

我的代码如下:

//GET THE CURRENT DATE
$current_date = date(\'F j, Y\');
$current_date = strtotime( $current_date );

$args = array(      
    \'orderby\'          => \'post_date\',
    \'order\'            => \'DESC\',
    \'post_type\'        => \'event\',
    \'post_status\'      => \'publish\',
    \'suppress_filters\' => true
);

$posts = get_posts( $args );

// BUILD SHORTCODE CODE TO BE INSERTED
foreach($posts as $post){       

    $event_start_date=get_post_meta($post->ID,\'event-start-date\');
    $event_end_date=get_post_meta($post->ID,\'event-end-date\');

    $event_start=date(\'F j, Y\', $event_start_date[0]);
    $event_end=date(\'F j, Y\', $event_end_date[0]);
    $exp_date = strtotime( $event_end );

    if( $exp_date > $current_date ) {

    $shortcode_str="[MY_SHORTCODE_CURRENT]";
    } 
    else {
    $shortcode_str_ex="[MY_SHORTCODE_EXPIRED]";
    }
}

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

您无法更改DESCASC “在IF语句内”。此时已运行查询。我真的不明白代码的作用是什么。我真的没有看到代码产生您描述的模式。具体地说,我不明白短码字符串或for是什么,或者应该如何工作。但是,我可以复制结果。也许这会有帮助。

//GET THE CURRENT DATE
$current_date = date(\'F j, Y\');
$current_date = strtotime( $current_date );

$args = array(      
    \'orderby\'          => \'post_date\',
    \'order\'            => \'DESC\',
    \'post_type\'        => \'post\',
    \'post_status\'      => \'publish\',
    \'suppress_filters\' => true
);

$posts = get_posts( $args );

$expired = array();

// BUILD SHORTCODE CODE TO BE INSERTED
foreach($posts as $post){       
  $event_start_date=get_post_meta($post->ID,\'event-start-date\',true);
  $event_end_date=get_post_meta($post->ID,\'event-end-date\',true);

  if (empty($event_start_date) || empty($event_end_date)) continue;
  $event_start=date(\'F j, Y\', $event_start_date);
  $event_end=date(\'F j, Y\', $event_end_date);
  $exp_date = strtotime( $event_end );

  echo \'$exp_date > $current_date<br>\';
  if( $exp_date > $current_date ) {
    // Match:
    // Event A • July 30, 2015 
    echo the_title(),\' &bull; \',$event_end;
    echo \'<br>\';
  } 
  else {
    array_unshift($expired, get_the_title().\' &bull; \'.$event_end);
  }
}
echo \'$expired<br>\';
if (!empty($expired)) {
  echo implode(\'<br>\',$expired);
}
注意:如果不浏览一堆帖子并设置元字段(这将很枯燥),我就无法测试这一点,但我确信这是正确的。

编辑:我确实清理了一点代码,但它基本上是可行的。array_unshift prepends 将项目添加到数组中,以便对原始项目进行排序DESC 然后创建的数组array_unshift 应该是相反的顺序。

结束

相关推荐

使用WP_USER_QUERY按生日对用户进行排序

我已经创建了保存用户生日(生日)的用户元。生日是日期字段。现在,我想知道如何根据特定月份对所有过生日的用户进行排序(获取)。我已经创建了可以保存所有月份的下拉菜单。function users_months_dropdown() { ?> <select name=\"month\" id=\"month\" onchange=\"\" size=\"1\"> <option value=\"01\">January</option&g