Obtener publicaciones usando WP_Query

2

Quiero mostrar publicaciones usando las funciones WP_Query. También quiero añadir orden aleatorio.

Así que trato

<?php
  $temp = $wp_query; 
  $wp_query= null;
  $args = array(
        'orderby' => 'rand',
  ); 
  $wp_query = new WP_Query($args);
  $wp_query->query('showposts=8' . '&paged='.$paged );
  while ($wp_query->have_posts()) : $wp_query->the_post();
?>

Puedo ver 8 publicaciones pero parece que 'orderby' = > 'rand' no funciona.

    
pregunta name name2 27.03.2017 - 13:52

2 respuestas

3

Hace bastante tiempo desde que trabajé con WordPress, pero me parece que:

Estás ejecutando la consulta dos veces.

  • Primero cuando pasas $args al constructor durante la instanciación.

  • Segundo cuando llamas a query() .

Con esto, básicamente estás sobrescribiendo la primera consulta (la que contiene el orden by = rand).

La documentación de WP_Query menciona que get_posts() se llama si usa un parámetro en el constructor, y debería No te llamen dos veces:

  

& get_posts () : recupera y devuelve las publicaciones solicitadas de la base de datos.   También rellene $ posts y $ post_count. Nota: Esto se llama durante   construcción si WP_Query se construye con argumentos. No es   idempotent y no deben llamarse más de una vez en la misma consulta   objeto. Hacerlo puede resultar en una consulta rota.

Y la documentación del método query() establece que llama a get_posts() , por lo tanto, se llama dos veces:

  

& query ($ query) - Call parse_query () y get_posts () . Devuelve el   resultados de get_posts ().

La solución:

  • Debes poner todo en $args , o
  • agrega también el parámetro orderby a la llamada $wp_query->query(..) .
respondido por el Gabor Barat 29.03.2017 - 23:26
1

Eche un vistazo a la referencia de clase WP_Query y trabaje usted mismo desde allí. Pruebe los ejemplos básicos, juegue con los parámetros hasta que comprenda cómo funcionan WP_Query y el bucle.

enlace

La razón por la que su consulta no funciona es que no está pasando los parámetros correctamente (use la matriz args para todos) y está usando parámetros en desuso.

    
respondido por el Svartbaard 27.03.2017 - 14:12

Lea otras preguntas en las etiquetas