【问题标题】:Wordpress: show future events based on custom field AND order by dateWordpress:根据自定义字段和按日期排序显示未来事件
【发布时间】:2014-06-19 05:18:46
【问题描述】:

我有一个自定义内容类型(事件),在该类型中我有一个自定义日期字段,名称为:“日期”。在我的模板中,我正在运行 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”,则不会返回任何结果...

【问题讨论】:

标签: wordpress


【解决方案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 ),
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2016-06-10
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多