按多个元值排序Wordpress帖子

时间:2015-04-30 22:19:16

标签: php wordpress wp-query

使用get_posts(),我需要先检索某一天的帖子(这一天是由自定义字段设置的 - 只是日期,而不是时间)。我通过使用元键/值来完成此操作。然后,我需要根据一天中的时间来订购这些帖子(这是一个单独的自定义字段,只是时间,而不是日期)。所以基本上我需要提取所有属于某一天的事件,并根据时间对它们进行排序。

首先,我使用自定义字段抓住这一天:

if ( get_field('festival_day') ) {
  $day_stamp = get_field('festival_day');
}

然后我为查询设置我的参数:

$args = array(
        'posts_per_page' => -1,
        'post_type' => 'event',
        'meta_key' => 'event_date',
        'meta_value' => $day_stamp
    );
    $events = get_posts( $args );

那么..问题是,如何查询其他自定义字段(这是开始时间),然后按那个时间排序?时间字段键为event_start_time

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用WP_Query来检索您的活动,您可以查询以下内容:

$args = array(
    'post_type' => 'event',
    'order' => 'DESC',
    'orderby' => 'meta_value',
    'meta_key' => 'event_start_time',
    'meta_query' => array(
        array(
            'key' => 'event_start_time',
            'value' => 'yourValue_here',
            'compare' => '>='
        ),
        array(
            'key' => 'event_date',
            'value' => $day_stamp,
            'compare' => '='
        )
    )
);
$query = new WP_Query( $args );

UNTESTED 但它应该有用。

答案 1 :(得分:0)

Check this code, it should work to sort your post according to time from resulting post of day.

$args = array(
'post_type'     => 'post',
'posts_per_page'    => -1,
'meta_key' => 'event_start_time',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'meta_query'=> array(
array(
'key' => 'event_date',
'value' => $day_stamp,
'compare' => 'IN'
)
)
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();     
echo '<li>'. get_the_title().'</li>';
}
echo '</ul>';
} else {
// no posts found
}