WordPress.org

Idiomas: inglês • Francês • Italiano • Loop 日本語 Português do Brasil • Русский • 中文(简体) • 中文(繁體) • (Adicionar o seu idioma)

Loop é um código PHP usado pelo WordPress para exibir posts. Usando o Loop, o WordPress processa cada post a ser exibido na página atual, e formata-o de acordo com a forma como ele corresponde aos critérios especificados dentro das tags de Loop. Qualquer código HTML ou PHP no Loop será processado em cada post.

quando a documentação do WordPress diz “Esta marca deve estar dentro do Loop”, tal como para Etiquetas de modelo específicas ou plugins, a marca será repetida para cada post. Por exemplo, O Ciclo apresenta as seguintes informações, por padrão, para cada post:

  • Título (the_title())
  • Tempo (the_time())
  • Categorias (the_category()).

pode mostrar outras informações sobre cada publicação usando as marcas de modelo apropriadas ou (para utilizadores avançados) acedendo à variável $post, que é definida com a informação da publicação actual enquanto o ciclo está em execução.

para um olhar de iniciante para o Loop, veja o Loop em ação.

usando o laço

o laço deve ser colocado no índice do tema.php e em quaisquer outros modelos usados para exibir informações de post.

certifique-se de incluir a chamada para o modelo de cabeçalho no topo dos modelos do seu tema. Se você estiver usando O Loop dentro de seu próprio projeto (e o seu próprio design não é um modelo), conjunto de WP_USE_THEMES para false:

<?php define( 'WP_USE_THEMES', false ); get_header(); ?>

O ciclo começa aqui:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

e termina aqui:

<?php endwhile; else : ?><p><?php esc_html_e( 'Sorry, no posts matched your criteria.' ); ?></p><?php endif; ?>

Este é usando PHP sintaxe alternativa para estruturas de controle, e também pode ser expressa como:

<?php if ( have_posts() ) {while ( have_posts() ) {the_post(); //// Post Content here//} // end while} // end if?>

Loop Exemplos

Estilo de Posts De uma determinada Categoria de forma Diferente

Este exemplo exibe cada post com o Título (que é usado como um link para o Post Permalink), Categorias e Conteúdo. Ele também permite que os posts em uma categoria com o ID de categoria ‘3’ sejam denominados de forma diferente. Para isso, é usada a Tag do modelo in_ categegory (). Leia atentamente os comentários para ver o que cada parte do código está fazendo.

Nota: Todo o código HTML deve estar fora do <?php ?Etiquetas >. E, PHP code (mesmo coisas tão simples como Chavetas: } ) deve estar dentro do <?php ?Etiquetas >. Você pode iniciar e parar blocos de código PHP para intercambiar o código HTML dentro de se e mais declarações, como mostrado no exemplo acima.

exclui os Posts de alguma categoria

este exemplo demonstra como esconder uma categoria ou categorias específicas de serem exibidas. Neste caso, estão excluídos os lugares das categorias 3 e 8. O exemplo é diferente do exemplo acima em que ele faz uma mudança na própria consulta.

Nota: Se você usar este exemplo para a sua página principal, você deve usar um modelo diferente para os seus arquivos de Categoria; caso contrário, o WordPress irá excluir todas as publicações na categoria 3 e na categoria 8, mesmo ao ver esse arquivo de categoria! No entanto, se você deseja usar o mesmo arquivo de modelo, você pode evitar isso usando o is_home() etiqueta para garantir que os posts da Categoria 3 Categoria e 8 só serão excluídas da página principal:

...<?php if ( is_home() ) {$query = new WP_Query( 'cat=-3,-8' );if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); } else {...?>...

Existem outras Tags Condicionais que pode ser usado para controlar a saída, dependendo se ou não de uma determinada condição é verdadeira com respeito à página solicitada.

Orientação a objetos

Loops são uma combinação de comportamento orientado a objetos e global. Isto é confuso no início.

as duas variáveis globais importantes para os loops são::

  • $WP_Query que é um objeto da classe WP_Query, segurando um resultado de consulta de banco de dados WP entre os quais $WP_Query – >posts, uma série de wp_ posts individuais.
  • $post, que é o objecto actual da classe WP_Post

lembre-se: todas as marcas do modelo dependem da variável $post global por omissão e a variável $post global é definida/modificada pela the_post(), que obtém os seus dados a partir da variável $WP_Query global. $post também é definido/modificado por wp_ query::the_ Post() como usado em loops secundários.

Loops múltiplos

esta secção trata do uso avançado do Loop. É um pouco técnico, mas não deixes que isso te assuste. Vamos começar com um exemplo fácil e trabalhar a partir daí. Com um pouco de senso comum, paciência e entusiasmo, Você também pode fazer vários loops.

em primeiro lugar, porque haveria alguém de querer usar vários loops? Em geral, a resposta é que você pode querer fazer algo com um grupo de posts, e fazer algo diferente a outro grupo de posts, mas exibir ambos os grupos na mesma página. “Algo” pode significar quase tudo.; você só está limitado pela sua habilidade de PHP e pela sua imaginação.

vamos entrar em exemplos abaixo, mas primeiro você deve ler sobre o básico. Dê uma olhada no Loop básico. É composto por::

<?php if ( have_posts() ) : ?><?php while ( have_posts() ) : the_post(); ?> <!-- do stuff ... --><?php endwhile; ?><?php endif; ?>

um pouco de lado sobre fazer coisas: neste exemplo, é simplesmente um item de substituição para um monte de código que determina como formatar e exibir cada post em uma página. Este código pode mudar dependendo de como você quer que o seu WordPress para olhar. Se olhar para o índice do tema Kubrick.php a seção do material do Seria tudo abaixo:

<?php while ( have_posts() ) : the_post(); ?>

para cima:

<?php comments_popup_link( 'No Comments "', '1 Comment "', '% Comments "' ); ?>

uma explicação para os codificadores lá fora: os have_ posts() e the_post() são invólucros de conveniência em torno do objeto $WP_Query global, que é onde toda a ação está. O $wp_ Query é chamado no cabeçalho do blog e argumentos de consulta fed que vêm através do GET e do PATH_ info. O $wp_query pega os argumentos e constrói e executa uma consulta DB que resulta em uma matriz de posts. Este array é armazenado no objeto e também retornado de volta para o cabeçalho do blog, onde ele é enfiado no global $posts array (para compatibilidade reversa com loops post antigos).

uma vez que o WordPress terminou de carregar o cabeçalho do blog e está descendo para o modelo, chegamos ao nosso post Loop. The have_ posts() simply calls into $wp_query – >have_ posts () which checks a loop counter to see if there are any posts left in the post array. And the_post() calls $wp_query->the_post () which advances the loop counter and set up the global $post variable as well as all of the global post data. Uma vez que tenhamos esgotado o loop, have_posts() irá retornar falso e estamos feitos.

Loop Examples

Below are three examples of using multiple loops. A chave para usar vários loops é que $WP_Query só pode ser chamado uma vez. A fim de contornar isso, é possível reutilizar a consulta chamando rewind_ posts() ou criando um novo objeto de consulta. Isto é coberto no exemplo 1. No exemplo 2, usando uma variável para armazenar os resultados de uma consulta é coberto. Finalmente, ‘multiple loops in action’ reúne um monte de idéias para documentar uma maneira de usar vários loops para promover posts de uma determinada categoria na página inicial do seu blog.

multiple Loops Example 1

In order to loop through the same query a second time, call rewind_posts(). Isto irá reiniciar o contador de loop e permitir que você faça outro loop.

<?php rewind_posts(); ?> <?php while ( have_posts() ) : the_post(); ?><!-- Do stuff... --><?php endwhile; ?>

se tiver terminado com as publicações da consulta original, e quiser usar uma consulta diferente, pode reutilizar o objecto $WP_Query chamando query_ posts() e depois fazer um looping de volta. The query_ posts () will perform a new query, build a new posts array, and reset the loop counter.

se você precisar manter a consulta original ao redor, você pode criar um novo objeto de consulta.

Loops múltiplos Exemplo 2

outra versão de usar Loops múltiplos leva outro tack para contornar a incapacidade de usar have_ posts() e the_ post(). Para resolver isso, você precisa armazenar a consulta original em uma variável, em seguida, repassá-la com o outro Loop. Desta forma, você pode usar todas as funções padrão que dependem de todos os globais.

por exemplo:

nota: em PHP 5, objetos são referenciados com o operador “= clone” em vez de “=” como no PHP 4. Para fazer o Exemplo 2 funcionar em PHP 5 você precisa usar o seguinte código:No entanto, este segundo exemplo não funciona no WordPress 2.1.

múltiplos laços em acção

a melhor maneira de compreender como usar múltiplos laços é realmente mostrar um exemplo do seu uso. Talvez o uso mais comum de múltiplos loops é mostrar duas (ou mais) listas de posts em uma página. Isso é muitas vezes feito quando um webmaster quer caracterizar não só o mais recente post escrito, mas também posts de uma determinada categoria.Deixando de lado todas as questões de formatação e CSS, vamos assumir que queremos ter duas listas de posts. Um que listaria os posts mais recentes (os 10 posts padrão mais recentemente adicionados), e outro que conteria apenas um post da categoria “featured”. Os lugares na categoria “Destaque” devem ser mostrados em primeiro lugar, seguido pela segunda listagem de lugares (a norma). A captura é que nenhum post deve aparecer em ambas as Categorias.

Passo 1. Obtenha apenas um post da categoria ‘featured’.

em inglês o código acima seria:

Set $my_query equal to the result of querying all posts where the category is named featured and by the way, get me one post only. Além disso, defina a variável $do_ not_duplicate igual ao número de ID da única publicação devolvida. Lembre-se que a linha do do material representa todas as opções de formatação associadas para o post recuperado.

Note que vamos precisar do valor de $do_not_ uplicate no próximo passo para garantir que o mesmo post não aparece em ambas as listas.

Passo 2. O segundo loop, obter os X posts mais recentes (exceto um).

o seguinte código recebe x posts recentes (como definido nas preferências WordPress) salvar o já exibido do primeiro loop e exibi-los de acordo com o fazer coisas.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( $post->ID == $do_not_duplicate ) continue;?><!-- Do stuff... --><?php endwhile; endif; ?>

em inglês, o código acima seria:

Get all posts, onde um post é igual a $do_not_ uplicate, em seguida, apenas não fazer nada (continue), caso contrário, exibir todos os outros posts de acordo com o Do stuff. Além disso, atualize o cache para que os plugins de tagging e palavras-chave sejam bons. Recordar, a variável $do_ Not_ actualizar contém o ID da publicação já apresentada.

the End Result

Here is what the final piece of code looks like without any formatting:

The end result would be a page with two lists. A primeira lista contém apenas um post — o post mais recente da categoria ‘feature’. A segunda lista conterá x posts recentes (como definido nas preferências WordPress), exceto o post que já é mostrado na primeira lista. Assim, uma vez que o post de recurso é substituído por um novo, O recurso anterior irá aparecer na seção de Lista de post padrão abaixo (dependendo de quantas mensagens você escolher para exibir e na frequência de post). Esta técnica (ou similar) tem sido usada por muitos em conjunto com o conhecimento da hierarquia do modelo para criar um olhar diferente para casa.php e index.pai. Veja os recursos associados no final desta página.

Nota para mensagens múltiplas na primeira categoria

se posts_per_page=2 ou mais, você terá que alterar o código um pouco. A variável $do_ Not_ duplicate precisa ser alterada em um array ao contrário de um único valor. Caso contrário, o primeiro loop irá terminar e a variável $do_ Not_ uplicate irá igualar apenas o id do último post. Isto resultará em posts duplicados no segundo loop. Para corrigir o problema substitua

por

Note que “posts_per_page” pode ser qualquer número.Isto muda $do_ não_ atualizado para uma matriz. Em seguida, substitua

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( $post->ID == $do_not_duplicate ) continue; ?>

por

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); if ( in_array( $post->ID, $do_not_duplicate ) ) continue; ?>

onde você continua o padrão para qualquer posts_per_page é igual a (2 Neste caso).

em alternativa, poderá passar toda a lista $do_ Not_ duplicate para $wp_ query e só serão devolvidos os itens que correspondam aos seus critérios:

<?php query_posts( array( 'post__not_in' => $do_not_duplicate ) );if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 

Note que em vez de uma string, o parâmetro da consulta era um array associativo definindo o post__não_em opção.Loops aninhados significa que você está executando um segundo loop antes de terminar o primeiro. Isto pode ser útil para exibir uma lista de posts com um shortcode, por exemplo.

$my_query = new WP_Query( 'cat=3' );if ( $my_query->have_posts() ) { while ( $my_query->have_posts() ) { $my_query->the_post();the_content();}}wp_reset_postdata();

é necessário reiniciar os dados do laço principal após um laço aninhado para que algumas variáveis globais mantenham os valores corretos novamente.

fontes

a secção sobre múltiplos loops é uma combinação da discussão de Ryan Boren e Alex King sobre o Loop na lista de discussão dos Hackers. O exemplo dos loops aninhados foi inspirado por outra discussão na lista de discussão e um post de Nicolas Kuttler.

Recursos

  • WordPress WP_Query Gerador
  • entrar Em Loop (slides) uma introdução a como plugins e temas pode modificar o Loop
  • WordPress Personalizado Loop
  • WordPress WP_Query Ciclo Gerador de

Relacionados

Para saber mais sobre o Loop do WordPress, e as várias tags de template que só funcionam dentro do Loop, aqui estão mais recursos:

Mais Sobre O Loop

  • Artigo: O Loop em Ação
  • Artigo: Template Tags
  • Artigo: Usando o Loop em arquivos de modelos

artigos

  • artigo: o Loop-uma visão básica de seu uso de consulta no loop WordPress.
  • Article: Query Overview-Explanation of how to determine which queries generate WordPress.Artigo: Procurar artigos mysql query using custom
  • Article: Build advanced queries on Taxonomies
  • Article: Build custom query using Offset and pagination

Code Documentation

  • Class: WP_Query – Visão Detalhada de classe WP_Query
  • Classe: WP_Comment_Query – Classe para comentar consultas relacionadas a
  • Classe: WP_User_Query – Classe de usuário para consultas relacionadas com
  • Objeto: $wpdb – Visão geral sobre o uso do $wpdb objeto
  • Função: set_query_var()
  • Função: get_query_var()
  • Função: query_posts() – Criar outras consulta personalizada
  • Função: get_post() – Tomar um ID de um item e retornar os registros no banco de dados para que o artigo
  • Função: get_posts (), Uma função especializada que retorna um array de itens
  • Função: get_pages (), Uma função especializada que retorna um array de páginas
  • Função: have_posts() – Uma condição que determina se a consulta retornou um artigo
  • Função: the_post() – Usada para definir automaticamente o ciclo depois de uma consulta
  • Função: rewind_posts() – Limpa o loop de corrente
  • Função: setup_postdata() – Define os dados para um único resultado de consulta dentro de um loop
  • Função: wp_reset_postdata() – Restaura a consulta anterior (geralmente depois de um loop dentro de outro loop)
  • Função: wp_reset_query()
  • Função: is_main_query() – Assegura que a consulta que está sendo alterado apenas o principal consulta
  • Ação Gancho: pre_get_posts – Alterar o WordPress consultas antes de serem executadas
  • Ação Gancho: the_post – para Modificar o post objeto após consulta
  • Gancho de Filtro: found_posts – Altera o valor do objeto found_posts WP_Query
Este artigo é marcado como necessidade de edição. Você pode ajudar o Codex editando-o.

You might also like

Deixe uma resposta

O seu endereço de email não será publicado.