Olá, @rtcadmin.
A forma mais simples seria usar uma “flag”, que nada mais é que uma variável que será verificada. Por exemplo, no código abaixo é a variável $i:
$i = 0;
$videos = new WP_Query(
array(
'post_type' => 'videos',
'posts_per_page' => 7
)
);
while( $videos->have_posts() ) : $videos->the_post(); ?>
<div class="repete"></div>
<?php
if ( 0 === $i ) {
?>
<div class="naorepetir"></div>
<?php
$i = 1;
}
?>
<div class="repete"></div>
<?php endwhile; ?>
-
Esta resposta foi modificada 6 anos, 8 meses atrás por Ramon Ahnert.
Olá @rahmohn
Não funcionou, ele faz o loop do primeiro só uma vez, mas preciso que ele faça loop todas as vezes.
Oque preciso que nao repita seria as divs
Preciso que o loop pule essa parte e continue com a de baixo
</div>
</div>
<div class="rvs-nav-container">
<a class="rvs-nav-prev"></a>
<div class="rvs-nav-stage">
<div class="rvs-container rvs-horizontal rvs-red-highlight rvs-plain-arrow-play rvs-hide-credits rvs-use-viewport">
<div class="rvs-item-container">
<div class="rvs-item-stage">
<?php $videos = new WP_Query(
array(
'post_type' => 'videos',
'posts_per_page' => 7
)
);
$i = 0;
while( $videos->have_posts() ) : $videos->the_post(); ?>
<div class="rvs-item" style="background-image: url(https://i.ytimg.com/vi/<?php the_field( 'link_do_youtube' ); ?>/maxresdefault.jpg)">
<p class="rvs-item-text"><?php the_title(); ?></p>
<a href="https://www.youtube.com/watch?v=<?php the_field( 'link_do_youtube' ); ?>" class="rvs-play-video"></a>
</div>
<?php if ( 0 === $i ) { ?>
</div>
</div>
<div class="rvs-nav-container">
<a class="rvs-nav-prev"></a>
<div class="rvs-nav-stage">
<?php $i = 1; } ?>
<a class="rvs-nav-item">
<span class="rvs-nav-item-thumb" style="background-image: url(https://i.ytimg.com/vi/<?php the_field( 'link_do_youtube' ); ?>/default.jpg)"></span>
<h4 class="rvs-nav-item-title"><?php the_title(); ?></h4>
<small class="rvs-nav-item-credits"></small>
</a>
<?php endwhile; ?>
</div>
<a class="rvs-nav-next"></a>
</div>
</div>
@rtcadmin
Para facilitar a não poluir muito o código, vamos testar algo mais simples. Veja o código abaixo.
<?php
$i = 0;
$repetir_uma_vez = 0;
while( $i < 3 ) {
echo "--- início do loop i = " . $i . " ---<br/>";
echo "imprime todas as vezes" . "<br/>";
if ( 0 === $repetir_uma_vez ) {
echo "imprime só uma vez no primeiro loop" . "<br/>";
$repetir_uma_vez = 1;
}
echo "imprime todas as vezes" . "<br/>";
echo "--- fim do loop ---" . "<br/><br/>";
$i++;
}
A saída desse código será:
— início do loop i = 0 —
imprime todas as vezes
imprime só uma vez no primeiro loop
imprime todas as vezes
— fim do loop —
— início do loop i = 1 —
imprime todas as vezes
imprime todas as vezes
— fim do loop —
— início do loop i = 2 —
imprime todas as vezes
imprime todas as vezes
— fim do loop —
Apenas no primeiro loop é que impresso o “imprime só uma vez no primeiro loop”. É esse comportamento que você deseja?
Olá @rahmohn
É quase isso mesmo que preciso.
Mas sou leigo e não sei usar isso no loop do wordpress.
Vou tentar explicar melhor, talvez tenha alguma forma mais facil.
Tenho umas divs abertas antes do loop que precisam se fechar no meio do loop.
Exemplo:
‘
<div id=”container”>
<div id=”fecha”>
<?php // Aqui está o loop do wordpress que se repete 3 veses ?>
<div id=”1″></div>
<div id=”2″></div>
<div id=”3″></div>
<?php // Preciso que essa div seja fechada uma unica vez ?>
</div><!– /.Fecha –>
<?php // depois que a div fechar o loop repita novamente mas sera exibida de outra forma ?>
<div id=”1″ class=”um”></div>
<div id=”2″ class=”um”></div>
<div id=”3″ class=”um”></div>
<?php //fim do loop ?>
</div>’
Obs: Eu fiz com 2 loops, encerrei o primeiro fechei as divs, e fiz outro loop.
Desta forma funciona, mas fica 2 loops, queria um meio pra usar um só.