Última publicación ordenada por fecha de publicación usando WP_Query en la página principal

22 sept 2013, 05:09:26
Vistas: 77.8K
Votos: 6

Estoy uniendo varios sitios web en uno y he creado las publicaciones correspondientes cambiando su post_date (fecha de publicación) al momento original de la publicación. Sin embargo (incluso si listo más de 1 publicación), el resultado que obtengo es la última publicación según el 'post_modified' bastante reciente (última actualización de la publicación).

// EDICIÓN - explicación más detallada del problema

Mi publicación original en el sitio web antiguo es del, digamos, 1 de enero de 2001 (fecha original). Luego, creo una publicación en el nuevo sitio web el 22 de septiembre de 2013 (hoy) y establezco manualmente la fecha de publicación en el área de Edición de Publicación a la fecha original. Puedo ver en el $wpdb post_date=2001-01-01 y post_modified=2013-09-22. El shortcode de última publicación devuelve la publicación con la fecha post_modified más reciente en lugar de la última fecha post_date.

// EDICIÓN - fin

Estoy ejecutando una WP_Query personalizada dentro de un slide de un plugin, usando un shortcode para colocarlo allí. El problema es que toma la última publicación modificada en lugar de la última publicación publicada.

Mi código para el shortcode:

//[latestpost]
function latestpost_func( $atts ){
    global $post;
    $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
    $query = new WP_Query( array( 'paged' => $paged ) );
    $latestpost_arg = array(
                          'post_type' => 'post',
                          'posts_per_page' => 1,
                          'orderby' => 'date',
                          'order' => 'DESC',
                          'paged' => $paged,
                          'ignore_sticky_posts' => 1,
                          'category__in' => array( 127, 253 )
            );
    $latestpost_query = null;
    wp_reset_query();
    $latestpost_query = new WP_Query($latestpost_arg);


     if ( $latestpost_query -> have_posts() ) :
      while ($latestpost_query -> have_posts()) :
            $latestpost_query -> the_post();
            if (has_post_thumbnail()) {
                $large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full');
                $latestpost_image_div = '<div class="slide-post-image"><img src="' . $large_image_url[0] . '" /></div>';
            }

            $latestpost_details_div = '<div class="slide-post-details-div"><h2 class="latest-post-title">' . get_the_title() . '</h2><p class="latest-post-excerpt">' . get_the_excerpt() . '</p></div>';

            $latestpost_output = $latestpost_image_div . $latestpost_details_div;
      endwhile;
     else :
        $latestpost_output = 'Lo sentimos, ninguna publicación coincide con tus criterios.';
     endif;

  return $latestpost_output;
 }

 add_shortcode( 'latestpost', 'latestpost_func' );
0
Todas las respuestas a la pregunta 2
1
16

Los siguientes 3 parámetros te darán las publicaciones en orden ascendente según la fecha de publicación (es decir, las publicaciones más antiguas se mostrarán primero)

'post_status' => 'publish', 'orderby' => 'publish_date', 'order' => 'ASC'

Cuando cambias el order a DESC, obtendrás las publicaciones en orden descendente según la fecha de publicación (es decir, las publicaciones más recientes se mostrarán primero)

'post_status' => 'publish', 'orderby' => 'publish_date', 'order' => 'DESC'

<?php
$postsPerPage = 10;
$page = 1;
?>
<?php
$query = new WP_Query(array(
    'cat' => 4,
    'post_status' => 'publish',
    'orderby' => 'publish_date',
    'order' => 'ASC',
    'paged' => $page,
    'posts_per_page' => $postsPerPage));
?>
3 abr 2017 16:49:36
Comentarios

De acuerdo con la documentación de WP, publish_date no es una opción disponible para el parámetro orderby.

https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters

https://codex.wordpress.org/Class_Reference/WP_Query

crs1138 crs1138
5 abr 2017 10:36:33
1

He descubierto cuál era el problema. Tengo un plugin, Custom Post Order, activo para poder ordenar mis CPTs. Este plugin estaba sobrescribiendo el orden de las publicaciones. Después de desactivarlo para las publicaciones en los ajustes de CPO, todo funciona como debería.

22 sept 2013 20:27:19
Comentarios

Gracias por el recordatorio.

crs1138 crs1138
23 oct 2014 15:45:04