Wordpress: eliminar los puestos duplicados en múltiples bucles

Jueves, 2 de julio 2009

El query_posts() función útil query_posts() o WP_Query objeto (que son, pues, básicamente la misma cosa) Wordpress le permite obtener una lista de puestos de establecer los parámetros de búsqueda de muchos (ver un fragmento muy corto: ver una lista de los puestos por categoría o etiqueta ). Precisamente debido a su versatilidad en la investigación de un puesto puede suceder que la función que utiliza dos o más veces en una fila a obtener el "duplicado". Esto puede ocurrir, por ejemplo, cuando se busca (filtros) para las etiquetas, un puesto, de hecho, puede (de hecho, en la mayoría de los casos) se han asociado etiquetas. De ello se deduce que la lista de los puestos con TAG A también podrán presentar un puesto en la lista de los puestos con TAG B

Para eliminar el problema puede proceder de dos maneras diferentes, dependiendo de la versión de WordPress. La primera es dejar de lado todas las IDs del primer bucle con el fin de excluir en el segundo. Esta técnica se puede utilizar para cualquier número de bucles y con la ventaja de ser compatible con versiones anteriores de WordPress:

PHP:
  1. / / Primer anillo
  2. / / La matriz $ ids [] a continuación se utiliza para llevar un registro de
  3. / / ID del mensaje que he salido con el primer bucle
  4. array ( ) ; IDS: = array ();
  5. ) ; query_posts ( 'category_name = Flash & showposts = 10');
  6. have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
  7. = $post -> ID ; $ Ids [] = $ post -> ID;
  8. / / ... salida
  9. endwhile;
  10. / / Segundo anillo
  11. / / En este caso la salida es lo único
  12. / / $ Post-> ID no está presente en los $ ids []
  13. ) ; query_posts ( 'category_name = Adobe & showposts = 10');
  14. have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
  15. ! in_array ( $post -> ID , $ids ) ) { , si (in_array ($ post -> ID, $ ids)) (
  16. / / ... salida
  17. )
  18. endwhile;

Si la liberación de WordPress que estamos utilizando es de 2,6 o superior, se puede aplicar una variante de comodoa el segundo bucle:

PHP:
  1. / / Segundo anillo
  2. / / WordPress 2.6 +
  3. / / En este caso es directamente query_posts () para
  4. / / Excluir los identificadores de los puestos que ya hemos mostrado
  5. query_posts (
  6. 'showposts' => 10 , showposts array ( '' => 10,
  7. 4 , 'cat' => 4,
  8. $ids , 'post__not_in' => $ IDS,
  9. ));
  10. have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
  11. / / ... salida
  12. endwhile;

post__not_in opción con los demás está bien documentada aquí.

Post relacionados

Fue útil esta información?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Cargando ...

3 comentarios a "Wordpress: eliminar mensajes duplicados en múltiples lazos"

  1. getAvatar 1,0
    02 luglio, 2009 Undolog.com »Wordpress: eliminar los puestos duplicados en bucles múltiples:

    [...] Artículo original: Undolog.com »Wordpress: eliminar los puestos duplicados en múltiples lazos Artículos relacionados: Undolog.com" un fragmento muy corto: Wordpress, pronto en el [...]

  2. getAvatar 1,0
    04 luglio, 2009 Wordpress: eliminar los puestos duplicados en bucles múltiples:

    [...] Fuente: Wordpress: eliminar los puestos duplicados en múltiples lazos Artículos relacionados: Undolog.com »Wordpress: eliminar los puestos duplicados en el circuito de [...]

  3. getAvatar 1,0
    04 luglio, 2009 Pick of the Week # 24 | BigThink:

    [...] Wordpress: eliminar los puestos duplicados en múltiples bucles Un pequeño truco para evitar repetir el puesto cuando tenemos dos bucles en la misma página. [...]

Deja tu comentario

TAG XHTML RESTRICCIONES: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <pre></pre>         // blocco generico [code][/code]       // blocco generico [as][/as]           // Actionscript [css][/css]         // CSS Style Sheet [html][/html]       // HTML [js][/js]           // Javascript [objc][/objc]       // Objective-C [php][/php]         // PHP [sql][/sql]         // SQL