El filtrado de una W_Query meta_query por valores numéricos no funciona

2

Ese era un título muy denso.

Tengo un tipo de publicación personalizado "evento" que tiene un campo selector de Fecha / Hora "event_date" gracias al complemento de Campos personalizados avanzados. Este selector de fecha / hora guarda una marca de tiempo de UNIX en la base de datos. Estoy tratando de usar WP_Query para obtener todos los eventos que son hoy o en el futuro. Este es el código que tengo ahora:

$args = Array(
    'post_type'         => 'event',
    'posts_per_page'    => -1,
    'meta_key'          => 'event_date',
    'orderby'           => 'meta_value_num',
    'order'             => 'ASC',
    'meta_query'        => array(
                'key'       => 'event_date',
                'compare'   => '>=',
                'value'     => intval(strtotime(date('Y-m-d'))),
                'type'      => 'numeric'
    ),
);

$query = new WP_Query( $args );

Me está dando todos los eventos, pasados y futuros.

Me doy cuenta de que las marcas de tiempo se almacenan como cadenas en la base de datos, por lo que 'compare' = > '> =' normalmente no funcionaría, pero lo que he leído en Google y en el Códice que 'escribe' = > 'numérico' debe convertir la cadena en un entero y permitir que se compare con mi valor de esta mañana a la medianoche. Desafortunadamente, eso no parece funcionar y no entiendo por qué.

    
pregunta Ryan Giglio 07.05.2013 - 20:08

2 respuestas

6

Prueba una matriz de matrices en tu meta consulta.

$args = Array(
    'post_type'         => 'event',
    'posts_per_page'    => -1,
    'meta_key'          => 'event_date',
    'orderby'           => 'meta_value_num',
    'order'             => 'ASC',
    'meta_query'        => array(
         array(
                'key'       => 'event_date',
                'compare'   => '>=',
                'value'     => intval(strtotime(date('Y-m-d'))),
                'type'      => 'numeric'
         )
    ),
);

$query = new WP_Query( $args );
    
respondido por el Kailey Lampert 07.05.2013 - 20:10
0

woa, me salvaste el día con esta respuesta, estaba tratando de filtrar las publicaciones por un campo numérico personalizado llamado type_price y estaba tratando de hacerlo de esa manera:

'meta_query' => array(
    array(
        'key' => 'type_price',
        'value' => array( 0, 500000 ),
        'compare' => 'BETWEEN',
        'type' => 'NUMERIC',
 )),

pero debería ser así para hacerlo ASC:

array(
   'posts_per_page' => -1, 
   'meta_key' => 'type_price', 
   'orderby'  => 'meta_value_num', 
   'order' => 'ASC', 
       'meta_query' => array(
           array(
                'key' => 'type_price',
                'value' => array( 0, 500000 ),
                'compare' => 'BETWEEN',
                'type' => 'NUMERIC',
            )
        )),

muchas gracias :)

    
respondido por el user91935 07.04.2016 - 09:44