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 la tabla post_meta en lugar de 'post_date_gmt'.
En mi caso, tengo meta_keys que se denominan 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 su caso, podría poner algo como: date( "dmY", strtotime( '6 months ago' ) )
Prueba este código:
$sixmonthagodate = date( "dmY", 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.
Primero lo primero
date_queryfunciona enpost_date_gmt. Si desea consultar la publicación desde los metacampos, debe usarmeta_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('dm-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:
¡Espero que esto ayude!