WordPress: Quitar los mensajes duplicados en varios bucles

(che poi sono fondamentalmente la stessa cosa) di WordPress permette di ottenere una lista di post impostando numerosi parametri di ricerca (vedi Very short snippet: visualizzare una lista di post per categoria o tag ). La función de utilidad query_posts() u objeto WP_Query (que básicamente son la misma cosa) WordPress te permite obtener una lista de varios parámetros de búsqueda de post-(ver fragmento muy corto: Muestra una lista de mensajes por categorías o etiquetas ). Precisamente debido a su versatilidad en la búsqueda de mensaje puede ocurrir que la función con dos o más veces en una fila que consigue el "duplicado". Esto puede suceder, por ejemplo, en la búsqueda (filtrado) de TAG, un puesto, de hecho, puede (de hecho lo ha hecho, en la mayoría de los casos) se han asociado etiquetas. . De ello se desprende que la lista de mensajes con TAG A también puede publicar una lista de mensajes con la TAG B .

Para eliminar este problema se puede proceder de dos maneras diferentes, dependiendo de la versión de WordPress. La primera es dejar a un lado todos los números de identificación de la primera vuelta con el fin de excluirlos en la segunda. Esta técnica se puede utilizar para cualquier número de bucles y la ventaja de ser compatible con las versiones antiguas de WordPress:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/ / Primer anillo
/ / El array $ ids [] se utiliza a continuación para no perder de vista
/ / Id del mensaje que yo salí con el primer bucle
array ( ) ; $ Ids = matriz ();
) ; query_posts ('category_name = Flash & showposts = 10');
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
= $post -> ID ; $ Ids [] = $ post -> ID;
/ / ... salida
endwhile;

/ / Segundo bucle
/ / En este caso la salida es lo único que
/ / $ Post-> ID no está presente en los identificadores de $ []
) ; query_posts ('category_name = Adobe y showposts = 10');
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
! in_array ( $post -> ID , $ids ) ) { if ( in_array ($ post -> ID, $ ids)) {
/ / ... salida
}
endwhile;

Si el lanzamiento de WordPress es que estamos usando 2.6 o superior, podemos aplicar una variante comodoa el segundo bucle:

1
2
3
4
5
6
7
8
9
10
11
12
/ / Segundo bucle
/ / WordPress 2.6 +
/ / En este caso, es directamente query_posts () para
/ / Excluir los identificadores de los mensajes que ya hemos mostrado
query_posts (
'showposts' => 10 , serie ('showposts' => 10,
4 , 'Gato' => 4,
$ids , "Post__not_in '=> $ ids,
));
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
/ / ... salida
endwhile;

La opción post__not_in junto con los demás está bien documentado aquí .

4 comentarios para "WordPress: eliminar mensajes duplicados en múltiples lazos"

  1. 02 de julio 2009 Undolog.com »Wordpress: eliminar mensajes duplicados en múltiples lazos :

    [...] Artículo Original: Undolog.com »WordPress: eliminar mensajes duplicados en varios bucles Artículos relacionados: Undolog.com" fragmento muy corto: Wordpress, antes de [...]

  2. 04 de julio 2009 Wordpress: eliminar mensajes duplicados en varios bucles :

    [...] Fuente: WordPress: eliminar mensajes duplicados en varios bucles Artículos relacionados: Undolog.com »WordPress: eliminar la duplicación de mensajes en el circuito de [...]

  3. 04 de julio 2009 Lo mejor de la semana # 24 | BigThink :

    [...] WordPress: eliminar mensajes duplicados en varios bucles Un pequeño truco para evitar que se repita el mensaje, cuando tenemos dos bucles en la misma página. [...]

  4. 05 de abril 2010 Nikopolidis :

    Artículo muy interesante, tengo una pregunta que podría poner en práctica la ejecución del script:
    con este código, si hago clic en la segunda página, automáticamente devolver el mismo después de la primera. ¿Cómo puedo evitar esto? :)

    Gracias

Deja un comentario

XHTML PERMISO TAG: <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 [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Dejar de SOPA