Metaconsulta de wordpress personalizada (sin resultado)

2 minutos de lectura

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

  • 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

avatar de usuario
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!

¿Ha sido útil esta solución?