Suporte » Questões avançadas » Como remover certos posts de um loop?

  • Resolvido AndersonGR

    (@andersongr)


    Resolvi já, mudei de loop, e adicionais algumas linhas de código:
    loop1

    <?php
    	$query01 = new WP_Query( array($args));
    	$ids = array();
    	if ( $query01 -> have_posts() ) : while ( $query01 -> have_posts() ) : $query01 -> the_post();
    	$ids[] = get_the_ID();
    ?>

    declarei a variável $ids como um array, após a verificação se tem posts no loop1 a variável pega a ID desse post.

    loop2

    <?php
    	$query04 = new WP_Query( array('post__not_in' => $ids));
    	if ( $query04 -> have_posts() ) : while ( $query04 -> have_posts() ) : $query04 -> the_post();
    ?>

    no segundo loop ele exclui os posts que são iguais as IDs guardadas em $ids, se for igual ele não exibe o post, senão passa tranquilo.

    Segui o tutorial do Escola WordPress: http://www.escolawp.com/2010/02/10-truques-para-wordpress-que-lhe-vao-facilitar-a-vida/

    Espero que ajude alguém.

A visualizar 1 resposta (de um total de 1)
  • Moderador Zé Fontainhas

    (@vanillalounge)

    Armazena os Ids do primeiro loop que queres excluir, filtra no segundo.

    Nota: o código abaixo não foi testado.

    <?php
    
    // LOOP 1
    // Em princípio não é necessário,
    // depende do objectivo
    global $post;
    
    $args = array(
    	'orderby' => 'rand',
    	'showposts' => '3'
    	);
    
    $custom_posts = new WP_Query( $args );
    
    $exclude = array();
    
    if( $custom_posts->have_posts() ) {
    	while ( $custom_posts->have_posts() ) {
    		$custom_posts->the_post();
    		$exclude[] = get_the_ID();
    
    		// Em princípio não é necessário,
    		// depende do objectivo
    		setup_postdata($post);
    
    		// ...o que for preciso fazer ao post aqui...
    
    	}
    }
    wp_reset_postdata();
    ?>
    
    <?php
    
    // LOOP 2
    //
    // Em princípio não é necessário,
    // depende do objectivo
    global $post;
    
    $args = array(
    	'post__not_in' => $exclude;
    	);
    
    $normal_posts = new WP_Query( $args );
    
    $exclude = array();
    
    if( $normal_posts->have_posts() ) {
    	while ( $normal_posts->have_posts() ) {
    		$normal_posts->the_post();
    
    		// Em princípio não é necessário,
    		// depende do objectivo
    		setup_postdata($post);
    
    		// ...o que for preciso fazer ao post aqui...
    
    	}
    }
    wp_reset_postdata();
    ?>
A visualizar 1 resposta (de um total de 1)
  • O tópico ‘Como remover certos posts de um loop?’ está fechado a novas respostas.