Модератор
Юрій
(@yube)
Типы DATE
и DATETIME
работают с mysql-форматом даты, то есть ‘Y-m-d’.
Матчасть: https://developer.wordpress.org/reference/classes/wp_meta_query/
View post on imgur.com
так разве в этом плагине не этот формат? d.m.Y
на скрине формат даты
-
Ответ изменён 3 года назад пользователем devero8524.
Модератор
Юрій
(@yube)
так разве в этом плагине не этот формат? d.m.Y
В плагине можете ставить что угодно. В mysql без дополнительных преобразований сравниваются только даты в т.н. шведском формате Y-m-d.
Если плагин по-умному сохраняет метаданные типа «дата», то будет достаточно
'value' => date('d.m.Y'),
заменить на
'value' => date('Y-m-d'),
Если сохраняет, как задано для ввода-вывода, то придется шаманить с запросом.
-
Ответ изменён 3 года назад пользователем Юрій.
Я конечно не имею права просить такое, у вас скорее всего нету времени и желания делать мне готовый вариант, но все же, может вы сможете помочь мне написать код что бы оно работало корректно? У меня нету нужных знаний и я скорее всего не смогу их получить, а решения в общем то всегда ищу в интернете, но тут увы, не нашел. Могу если что оплатить ваш труд.
Модератор
Юрій
(@yube)
Для начала попробуйте с 'value' => date('Y-m-d'),
Предложения оплаты и т.п. допустимы (в качестве исключения) только в разделе «Поиск специалистов».
Понял, извините.
По поводу кода, возможно мне вообще вот этот массив не нужен?
array(
'key' => 'date',
'value' => date('d.m.Y'),
'compare' => '>=',
'type' => 'DATETIME'
)
),
Так как — compare выводит только те записи, у которых дата и время больше или равны текущей дате. А мне необходимо просто отсортировать.
Сделал так
<?php
// задаем параметры выборки в массиве
$args = array(
'cat' => array(106), // ID рубрики
'posts_per_page' => 8, // выводить по 8
'meta_key' => 'date',
'orderby' => 'meta_value_num date',
'order' => 'ASC',
'meta_type' => 'DATETIME',
'meta_query' => array(
array(
'key' => 'date',
'value' => date('Y-m-d'),
'compare' => '>=',
'type' => 'DATETIME'
)
),
);
// запрос
$query = new WP_Query( $args );
?>
<?php if ( $query->have_posts() ) : ?>
<!-- цикл -->
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<h1><?php the_title(); ?></h1>
<?php endwhile; ?>
<!-- конец цикла -->
<?php wp_reset_postdata(); //очищаем результат запроса?>
<?php else : ?>
<p><?php esc_html_e( 'Ничего не найдено.' ); ?></p>
<?php endif; ?>
Не работает.
-
Ответ изменён 3 года назад пользователем devero8524.
Модератор
Юрій
(@yube)
А мне необходимо просто отсортировать.
Тогда meta_query не нужно.
Попробуйте так
$args = array(
'cat' => array(106), // ID рубрики
'posts_per_page' => 8, // выводить по 8
'meta_key' => 'date',
'meta_type' => 'DATETIME',
'orderby' => 'meta_value_datetime',
'order' => 'ASC',
);
остальной код как есть