Consulta post_meta date en lugar de post_date_gmt

2 minutos de lectura

avatar de usuario
Usuario_FTW

Estoy limitando mi consulta para usar mostrar publicación de hace 6 meses, lo que funciona bien.

Pero necesito que se base en una fecha que está en el post_meta tabla en lugar de ‘post_date_gmt’.

En mi caso tengo meta_keys que se llaman payment_date y los valores son, por supuesto, una fecha como 31-10-2016 por ejemplo.

$months_ago = 6;
$args = array(
'date_query' => array(
    array(
        'column' => 'post_date_gmt',
        'after'  => $months_ago . ' months ago',
        )
    ),
'numberposts'   => -1
);

Compruébalo aquí: https://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

Si te desplazas por los ejemplos, verás:

Mostrar publicaciones donde la clave del campo personalizado es una fecha establecida y el valor del campo personalizado es ahora. Muestra solo las publicaciones cuya fecha no ha pasado.

$args = array(
    'post_type'    => 'event',
    'meta_key'     => 'event_date',
    'meta_value'   => date( "Ymd" ), // change to how "event date" is stored
    'meta_compare' => '>',
);
$query = new WP_Query( $args );

En tu caso podrías poner algo como: date( "dmY", strtotime( '6 months ago' ) )

avatar de usuario
peyman naeimi

Prueba este código:

$sixmonthagodate = date( "d-m-Y", strtotime('-6 Months') );

$args = array(
    'post_type'    => 'post',
    'posts_per_page' => -1,
    'meta_key'     => 'payment_date',
    'meta_value'   => $sixmonthagodate,
    'meta_compare' => '>',
);
$query = new WP_Query( $args );

compruebe si su post_type es verdadero en su sitio de WordPress.

avatar de usuario
Raunak Gupta

Primero lo primero date_query trabaja en post_date_gmt. Si desea consultar la publicación desde los metacampos, debe usar meta_query.

Aquí hay un código de muestra:

$months_ago = 6;
$args = [
    //...
    //...
    'posts_per_page' => -1, // Unlimited posts
    //...
    //...
    'meta_query' => [
        'relation' => 'AND',
        [
            'key' => 'payment_date',
            'value' => date('d-m-Y', strtotime($months_ago . ' months ago')), //<-- Converting date into your custom date format
            'compare' => '>', //you can also use <=, >=, <, etc..
            'type' => 'DATE'
        ],
    ]
];

$query = new WP_Query($args);

if ($query->have_posts()) :
    /* Start the Loop */
    while ($query->have_posts()) : $query->the_post();

    //you post

    endwhile;
endif;

El código anterior debería funcionar para usted.

Pregunta relacionada:

  • Ocultar publicaciones de eventos pasados ​​según el campo de fecha personalizado
  • La fecha del campo personalizado Orderby ACF no funciona

¡Espero que esto ayude!

¿Ha sido útil esta solución?