Wordpress:根据自定义字段和按日期排序显示未来事件

时间:2014-02-08 17:06:30

标签: wordpress

我有一个自定义内容类型(事件),在该类型中我有一个自定义日期字段,名称为:'date'。在我的模板中,我正在运行WP_Query以返回事件列表。我想只获取将来的事件(根据我的自定义'日期'字段),然后按相同的字段排序列表。

我尝试过以下操作,但只是返回系统中所有“事件”的列表,无论日期如何

    $today = date('d M, y');

    $args = array (
        'post_type'              => 'event',
        'meta_query'             => array(
            array(
                'key'       => 'date',
                'value'     => $today,
                'compare'   => '>',
                'type'      => 'CHAR',
            ),
        ),
        'meta_key'               => 'date',
        'orderby'                => 'meta_value_num',
        'order'                  => 'ASC'
    );

作为备注:如果我将“CHAR”中的类型替换为“DATE”,则不会返回任何结果...

1 个答案:

答案 0 :(得分:1)

试试这个:

的functions.php

function custom_unixtimesamp ( $post_id ) {
    if ( get_post_type( $post_id ) == 'events' ) {
    $startdate = get_post_meta($post_id, 'event_date_begins', true);

        if($startdate) {
            $dateparts = explode('/', $startdate);
            $newdate1 = strtotime(date('d.m.Y H:i:s', strtotime($dateparts[1].'/'.$dateparts[0].'/'.$dateparts[2])));
            update_post_meta($post_id, 'unixstartdate', $newdate1  );
        }
    }
}
add_action( 'save_post', 'custom_unixtimesamp', 100, 2);

然后查询

$today = time();    

    $args = array(
        'post_type' => 'events',
    'post_status' => 'publish',
    'posts_per_page' => '10',
    'meta_query' => array(
        array(
            'key' => 'unixstartdate',
            'compare' => '>=',
            'value' => $today,
            )
            ),
    'meta_key' => 'event_date_begins',
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 ),
);