订单由A​​CF自定义字段日期不起作用

时间:2017-02-17 10:11:11

标签: wordpress date advanced-custom-fields custom-fields

我查看了另一篇文章,但我什么也没找到,我从3天开始就开始了:

我想按顺序ASC显示3'evenements' 但2018年总是在2017年之前

$auj = date('Ymd');

$queryEvent = new WP_Query(
    array(
    'category_name' => 'evenements',
    'posts_per_page' => 3,
    'meta_key' => 'date_de_fin',
    'orberby' => 'meta_key',
    'order' => 'ASC',
    'meta_query' => array(
        array(
            'key' => 'date_de_fin',
            'value' => $auj,
            'compare' => '>=',
        ),
    )
    )
);

?>
有人有个主意吗?

3 个答案:

答案 0 :(得分:0)

我已更新您的代码。请尝试更新的查询。

<?php $auj = date('Ymd');

$queryEvent = new WP_Query(
    array(
        'category_name' => 'evenements',
        'posts_per_page' => 3,
        'meta_key' => 'date_de_fin',
        'orberby' => 'meta_value_num', 
        'order' => 'ASC',
        'meta_query' => array(
            array(
                'key'     => 'date_de_fin',
                'value'   => $auj,
                'compare' => '>=',
                'type' => 'DATE'
             ),
        )
    ));
?>

我已经取代&#39; orderby&#39;价值与价值添加&#39;类型&#39; meta_query中的参数。

希望,这可能对您有所帮助。

答案 1 :(得分:0)

  

由于您的日期格式不在Y-m-d中,因此您需要定义自己的日期格式   做空的逻辑

function wh_posts_orderby($orderby, $query) {
    //Only for custom orderby key
    if ($query->get('orderby') != 'yyyymmdd_date_format')
        return $orderby;
    if (!( $order = $query->get('order') ))
        $order = 'ASC';
    global $wpdb;
    $fieldName = $wpdb->postmeta . '.meta_value';
    return "STR_TO_DATE(" . $fieldName . ", '%Y%m%d') " . $order;
}

add_filter('posts_orderby', 'wh_posts_orderby', 10, 2);

将上面的^^代码添加到您的活动主题functions.php文件。

<小时/> 现在,您可以按日期(格式YYYYMMDD)

对帖子进行排序
$auj = date('Ymd');
$args = [
    'category_name' => 'evenements',
    'posts_per_page' => 3,
    'meta_key' => 'date_de_fin',
    'orberby' => 'yyyymmdd_date_format', //check this line
    'order' => 'ASC',
    'meta_query' => [
        'relation' => 'AND', //added this
        [
            'key' => 'date_de_fin',
            'value' => $auj,
            'compare' => '>=',
            'type' => 'DATE'
        ],
    ]
];
$queryEvent = new WP_Query($args);
if ($queryEvent->have_posts()) :
    /* Start the Loop */
    while ($queryEvent->have_posts()) : $queryEvent->the_post();

    //you post

    endwhile;
endif;

相关回答How do I query posts and use the 'orderby' attribute to order posts in loop according to date 'meta_value'?

希望这有帮助!

答案 2 :(得分:0)

我通过SQL查询解决问题:

User.findOneAndUpdate({
    'twitter.id_str': 123
}, {
    name: 'Full Name',
    email: 'mail@gmail.com',
    username: 'pseudo',
    provider: 'twitter',
    twitter: { id_str: 123 }
}, {
    upsert: true
}, function (err, user) {
    if (err) {
        return done(err);
    } else {
        console.log(user);
    }
});