WordPress: Remove posts duplicados em múltiplos loops

(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 ). O recurso útil query_posts() ou objeto WP_Query (que são basicamente a mesma coisa) WordPress permite que você obtenha uma lista de muitos parâmetros pós-ajuste de pesquisa (veja trecho muito curto: Apresentar uma lista de posts por categoria ou tags ). Precisamente devido à sua versatilidade em busca de pós-pode acontecer que a função usando duas ou mais vezes em uma linha você começa a "duplicado". Isso pode acontecer, por exemplo, ao pesquisar (com filtro) para TAG, um post, na verdade, pode (na verdade ele tem, na maioria dos casos) associaram tags. . Segue-se que a lista de posts com TAG A também pode postar uma lista de posts com a TAG B .

Para eliminar este problema, você pode proceder de duas maneiras diferentes, dependendo da versão do WordPress. O primeiro é para pôr de lado todos os IDs do primeiro ciclo, de modo a excluí-los no segundo. Esta técnica pode ser usada para qualquer número de loops e para a vantagem de ser compatível com versões mais antigas do WordPress:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/ Loop / First
/ / O array $ ids [] é usado abaixo para manter o controle de
/ Id / do post que eu saiu com o primeiro ciclo
array ( ) ; $ Ids = matriz ();
) ; query_posts ('category_name = Flash & showposts = 10');
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
= $post -> ID ; $ Ids [] = $ post -> ID;
/ / ... saída
endwhile;

/ Loop / Second
/ / Neste caso, a saída é apenas uma coisa que
/ / $ Post-> ID não está presente na ids $ []
) ; query_posts ('category_name = & Adobe showposts = 10');
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
! in_array ( $post -> ID , $ids ) ) { if ( in_array ($ post -> ID, $ ids)) {
/ / ... saída
}
endwhile;

Se o lançamento do WordPress é que estamos usando 2.6 ou superior, podemos aplicar uma variante comodoa segundo loop:

1
2
3
4
5
6
7
8
9
10
11
12
/ Loop / Second
/ / WordPress 2.6 +
/ / Neste caso, está diretamente query_posts () para
/ / Excluir os IDs dos posts já exibidas
query_posts (
'showposts' => 10 , série ('showposts' => 10,
4 , 'Cat' => 4,
$ids , "Post__not_in '=> $ ids,
));
have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
/ / ... saída
endwhile;

A opção post__not_in junto com os outros é bem documentado aqui .

4 comentários para "WordPress: eliminar posts duplicados em múltiplos loops"

  1. 02 de julho de 2009 Undolog.com »Wordpress: remover mensagens duplicadas em vários loops :

    [...] Artigo Original: Undolog.com »WordPress: eliminar posts duplicados em múltiplos loops Artigos relacionados: Undolog.com trecho de" muito curto: Wordpress, em breve [...]

  2. 04 de julho de 2009 Wordpress: remover mensagens duplicadas em vários loops :

    [...] Fonte: WordPress: eliminar posts duplicados em múltiplos loops Artigos relacionados: Undolog.com »WordPress: eliminar duplicar posts no circuito [...]

  3. 04 de julho de 2009 O melhor da semana # 24 | BigThink :

    [...] WordPress: eliminar posts duplicados em múltiplos loops Um pequeno truque para evitar um posto de repetir, quando temos dois loops na mesma página. [...]

  4. 05 de abril de 2010 Nikopolidis :

    Artigo muito interessante, eu tenho uma pergunta que poderia implementar a execução do script:
    usando este código, se eu clicar na segunda página, eu retornar automaticamente o mesmo após a primeira. Como posso evitar isso? :)

    Obrigado

Deixe um comentário

XHTML PERMIT TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CÓDIGO DE INSERÇÃO:
 <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