Problema
Estoy recorriendo los tipos de publicaciones personalizadas (Campos personalizados avanzados) en WordPress. Solo quiero mostrar eventos con fecha de inicio igual a la variable $newdate, definida al principio.
La fecha_de_inicio tiene el formato AAAA-MM-DD HH:mm (igual que $nuevafecha). $newdate se establece al comienzo del día, por lo que no excluiría eventos con diferentes horas en el día y comparar se establece en mayor que (solo para probar la consulta).
Sin embargo, no obtengo ningún resultado.
<?php
$newdate = date('Y-m-d 00:00');
//<-- Start the Loop. -->!
$args = array(
'post_type' => 'epsa_events',
'posts_per_page' => 5,
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array (
array(
'key' => 'start_time',
'value' => $newdate,
'compare' => '>=',
'type' => 'datetime'
)
)
);
$loop = new WP_Query( $args );
ravi hirani
Pruebe esta consulta: –
'meta_key' => 'event-start-date',
'meta_query' => array (
array(
'key' => 'start_time',
'value' => date('Ymd',strtotime($newdate)),
'compare' => '>=',
'type' => 'date'
)
)
-
No hay resultados con este cambio.
– armilósico
3 de enero de 2016 a las 16:13
-
cambiar el tipo de fecha y hora a la fecha
– Ravi Hirani
3 de enero de 2016 a las 16:34
-
¿Alguna vez conseguiste que esto funcionara? Estoy tratando de filtrar la fecha y la hora también por un rango de horas, pero no tuve suerte @rmilosic
– Nickey K.
27 de mayo de 2020 a las 11:55
-
@NickeyK lo siento, fue hace mucho tiempo y lamentablemente no puedo encontrar el código fuente :/
– armilósico
27 de mayo de 2020 a las 17:13
Supongo que tienes algunos pequeños errores aquí.
Primero, si usas 'orderby' => 'meta_value'
debes agregar un 'meta_key' => KEYVALUE
para usted $args
dónde KEYVALUE
es el nombre del campo personalizado que desea usar para ordenar. Controlar WP_Query
documentación sobre Parámetros de orden y orden por.
Segundo, asumiendo tu start_date
el tipo de campo es Selector de fecha y hora, si desea obtener todos los eventos que ya comenzaron, está utilizando el operador de comparación incorrecto. Suponiendo que también desee ordenar por fecha, su $args
el código debe ser:
$args = array(
'post_type' => 'epsa_events',
'posts_per_page' => -1,
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_key' => 'start_time',
'meta_type' => 'DATETIME'
'meta_query' => array (
array(
'key' => 'start_time',
'compare' => '<=',
'value' => $newdate,
'type' => 'DATETIME'
)
)
);
Echa un vistazo a Selector de fecha y hora documentación también.
¡Espero que esto ayude!
si su start_time está en ese formato, entonces no es datetime sino varchar. Así que compara 2 cadenas con resultados incontrolables.
– Mihai
3 de enero de 2016 a las 16:43
¿Qué formato de hora sugieres?
– armilósico
3 de enero de 2016 a las 16:49