Я изучил множество ответов и решений, и мне трудно это реализовать.
Моя цель: в WordPress я хочу заказать записи из пользовательского типа сообщения (события) для отображения в соответствии с пользовательским полем даты. Я видел другие решения для этого, но они не работают для меня, так как мой пользовательский ключ — это массив в мета-значении, а решения не были.
Я не могу изменить ядро кода, потому что весь сайт работает на нем и не был создан мной.
Я использую мета-ключ _my_meta
, и чтобы получить пост мета я использую get_post_meta($post->ID,'_my_meta',TRUE);
который я положу в переменную ($meta
). Все поля, которые я вызываю, находятся в массиве, поэтому $meta['img']
может быть пользовательское изображение, и $meta['date']
может быть пользовательская дата.
В настоящее время у меня все работает и работает правильно из пользовательского цикла WP_Query. Я просто хочу, чтобы посты извлекались и упорядочивались по настраиваемому текстовому полю даты.
Вот цикл, который я использую:
<?php
$args = array(
'post_type' => 'event',
'order' => 'ASC',
'orderby' => 'meta_value',
'meta_key' => '_my_meta',
'meta_query' => array(
array(
'key' => '_my_meta',
'value' => date('Ymd'),
'compare' => '>='
)
)
);
$new = new WP_Query( $args );
while ($new->have_posts()) : $new->the_post();
?>
Итак, я вытаскиваю из типа записи «событие», в порядке возрастания, упорядочивая по моему мета-значению. Пользовательское поле — это просто текстовое поле, в котором я поместил дату в формате «20150809» (что равно date('Ymd')
).
Meta_key это _my_meta
Однако я действительно хочу получить информацию от get_post_meta($post->ID,'_my_meta',TRUE)['date']
, Это вообще возможно? Я уверен, что метод, используемый в functions.php, не идеален, но это то, с чем я должен работать.
Я пытался изменить meta_value
в meta_value_num
и это двигает вещи вокруг, но не идеальным способом. В течение месяца, дата, кажется, в порядке, но месяцы все не в порядке.
Я вставил несколько произвольных дат, и с этой текущей настройкой он отображается как:
November 4th
November 6th
December 5th
August 9th
Любая помощь приветствуется. Спасибо!!
Задача ещё не решена.
Других решений пока нет …