Wordpress - дата сравнения - октябрь больше ноября (г-н) - PullRequest
0 голосов
/ 06 октября 2019

Я занимаюсь разработкой бронирования событий, все работает правильно с этим запросом, то есть он корректно размещает посты в соответствии с порядком величины

<?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();
?>

, где: get_option('customer_postquery'), восстанавливает все пользовательскиесозданные типы записей

, где: metakey_AMC_data - это мета-ключ, в котором дата события заключена в соответствующее значение meta_value

, где: $queried_object, извлекает таксономию на основе страницы таксономии, которую мынаходятся в

Проблема в том, что он отлично фильтрует все даты октября, например

  • 2019/10/05

  • 2019/10/10

  • 2019/10/15

но при вставке даты на следующий месяц, например (2019/ 11/01), ноябрь дает мне немного меньше, чем все, меняя расположение таким образом

  • 2019/11/01

  • 2019/10/05

  • 2019/10/10

  • 2019/10/15

как это исправить?

больше информации:

, когда я нахожусь на странице событий, поэтому я зашел на страницу, где у меня есть вся информация, этот запрос является тем, который регулирует только все будущие событияэтого пользовательского типа поста без различия таксономий, в этом случае без указания get_option и без таксономии даты отображаются идеально

$v_args = array(
    'post_type' => array('eventi-suite'),
    'posts_per_page'    => -1,
    'post_status' => 'publish',
    'order' => 'ASC',
    'meta_query' => array(
        array (
            'key'       => 'metakey_AMC_data',

        ),
    ),


);

1 Ответ

0 голосов
/ 06 октября 2019

Вы передаете 'orderby' => 'meta_value' без пропуска meta_key.

Цитата из документов :

meta_value '- обратите внимание, что' 'meta_key = keyname 'также должен присутствовать в запросе. Также обратите внимание, что сортировка будет алфавитной, что подходит для строк (т. Е. Слов), но может быть неожиданным для чисел (например, 1, 3, 34, 4, 56, 6 и т. Д., А не 1, 3, 4, 6,34, 56, как и следовало ожидать). Вместо этого используйте 'meta_value_num' для числовых значений. Вы также можете указать «meta_type», если хотите привести мета-значение к определенному типу. Возможные значения: «NUMERIC», «BINARY», «CHAR», «DATE», «DATETIME», «DECIMAL»,

Следовательно, вы должны изменить свои аргументы на что-то вроде этого:

$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_query, чтобы просто использовать meta_key в аргументах.

Обновление

Причина, по которой он не работает в вашем случае, заключается в том, что ваши датыхранятся в формате d-m-Y в вашей базе данных, поэтому порядок по дням вместо обычного year, month, day.

Просто обновите формат, в котором сохраняются даты в вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...