Php Wordpress-比较日期-10月大于11月(Y-m-d)

Php Wordpress-比较日期-10月大于11月(Y-m-d),php,wordpress,date,if-statement,Php,Wordpress,Date,If Statement,我正在开发一个事件预订,所有东西都可以正确地使用这个查询,也就是说,它根据数量级正确地放置帖子 <?php $v_args = array( 'post_type' => get_option('customer_postquery'), 'posts_per_page' => -1, 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_query' => arra

我正在开发一个事件预订,所有东西都可以正确地使用这个查询,也就是说,它根据数量级正确地放置帖子

<?php
$v_args = array(
    'post_type' => get_option('customer_postquery'),
    'posts_per_page'    => -1,
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'meta_query' => array(
        array (
            'key'       => 'metakey_AMC_data',
        ),
    ),
    'tax_query' => array(
        array(
            'taxonomy' => 'categoria',
            'field' => 'slug',
            'terms' => $queried_object,
        )
    )

);
$vehicleSearchQuery = new WP_Query( $v_args );


if( $vehicleSearchQuery->have_posts() ) :?>

    <?php while( $vehicleSearchQuery->have_posts() ) : $vehicleSearchQuery->the_post();
        ?>
        <?php
        $var = get_post_meta(get_the_ID(),'metakey_AMC_data',true);
        $data_dell_evento = date("Y-m-d", strtotime( $var ));
        /*PRENDERE LA DATA CORRENTE IN FORMATO Y-m-d DIRETTAMENTE DA MYSQL*/
        $data_di_oggi = date( 'Y-m-d', current_time( 'timestamp', 0 ) );
        if ($data_dell_evento > $data_di_oggi   ): ?>

            <div style="padding-top: 25px;" class="col-md-4"><!-- Card -->
                <?php include('content/home_page/card.php');  ?>
            </div>

        <?php  endif; ?>

    <?php
    endwhile;
else :
    ?>

<?php
endif;
wp_reset_postdata();
?>

您正在传递一个
'orderby'=>'meta\u value'
,而没有传递
meta\u键

引自:

meta_value’–请注意,查询中还必须存在“meta_key=keyname”。还请注意,排序将按字母顺序进行,这对于字符串(即单词)来说是很好的,但是对于数字(例如1、3、34、4、56、6等,而不是您自然期望的1、3、4、6、34、56等)来说可能是意外的。使用“meta_value_num”代替数值。如果要将元值强制转换为特定类型,还可以指定“meta_type”。可能的值为“数值”、“二进制”、“字符”、“日期”、“日期时间”、“十进制”

因此,您应该将args更改为以下内容:

$v_args = array(
    'post_type' => get_option('customer_postquery'),
    'posts_per_page'    => -1,
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'meta_key' => 'metakey_AMC_data',
    'tax_query' => array(
        array(
            'taxonomy' => 'categoria',
            'field' => 'slug',
            'terms' => $queried_object,
        )
    )
);
基本上,我将
meta_查询
更改为只在args中使用
meta_键

更新 它在您的案例中不起作用的原因是,您的日期在数据库中存储为
d-m-Y
格式,因此,它是按天排序的,而不是通常的
年、月、日


只需更新您在数据库中保存日期的格式。

我复制了您的代码并粘贴到了我的代码中,但都是一样的,为什么?@der您确定这是正确的元键吗?还有,这些值是如何存储在数据库中的?当然,meta键是正确的,它们是通过我作为插件创建的metabox中的一个表单保存的,格式为(d-m-Y),这就是为什么我随后转换了code@der那这就是问题所在。因为在数据库中,
01
比其他日期小。因此,订购是以第一天为基础的。您可以尝试添加一个
“meta\u type”=>“meta\u value\u datetime”
。如果我实现了这一点,所有的日期都是混合的
$v_args = array(
    'post_type' => get_option('customer_postquery'),
    'posts_per_page'    => -1,
    'orderby' => 'meta_value',
    'order' => 'ASC',
    'meta_key' => 'metakey_AMC_data',
    'tax_query' => array(
        array(
            'taxonomy' => 'categoria',
            'field' => 'slug',
            'terms' => $queried_object,
        )
    )
);