es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WordPress: Anomalía en la ordenación de WP_Query

Estoy ordenando un conjunto de publicaciones por un campo de fecha ACF utilizando estos argumentos en WP_Query.

'orderby' => 'meta_value',
'order' => 'ASC',
'meta_key'      => 'date',

Lo cual parece funcionar, excepto que está arrojando una anomalía.

Esto es una impresión de la lista de fechas (almacenadas como Ymd).

20211221
20220118
20220125
20220201
20220208
20220215
20220222
20220301
...
20221122
20221129
20221206
20221213
20221220
20220111

La última, que debería ser la segunda, aparece al final. (son fechas semanales a partir del 21 de diciembre de 2021.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema se debe a que se está utilizando el formato de fecha Ymd para almacenar las fechas en el campo de fecha de ACF. Cuando se utiliza meta_value como valor de orderby en los campos de fecha de ACF, WordPress ordena las entradas por la cadena de fecha en formato Ymd en lugar de por el valor de fecha real.

    Una solución a este problema es almacenar las fechas en el campo de fecha de ACF utilizando un formato que permita un fácil ordenamiento. Por ejemplo, almacenar las fechas en formato Y-m-d (por ejemplo, 2021-12-21) permitiría un ordenamiento simple utilizando los parámetros meta_value y order en WP_Query.

    Alternativamente, puedes utilizar el parámetro meta_type en WP_Query para especificar explícitamente el tipo de metadatos que se está utilizando. Establecer meta_type en 'DATE' debería ordenar las entradas por el valor de fecha real en lugar de la representación en cadena.

    $args = array(
        'meta_key' => 'fecha',
        'orderby' => 'meta_value',
        'order' => 'ASC',
        'meta_type' => 'DATE'
    );
    $query = new WP_Query( $args );
    

    Utilizar una de estas soluciones debería garantizar que las entradas se ordenen correctamente por el campo de fecha de ACF.

Comments are closed.