Ir para o conteúdo principal

Como usar corretamente WP_Query no WordPress

Divi: o tema WordPress mais fácil de usar

Divi: O melhor tema WordPress de todos os tempos!

mais Downloads 600.000Divi é o tema WordPress mais popular do mundo. É completo, fácil de usar e vem com mais de modelos livres 62. [Recomendado]

Sou um grande fã da classe WP_Query: uso-a em vários sites clientes para recuperar e exibir dados de maneira personalizada.

Se você deseja usar vários loops em uma página, a melhor maneira de fazer isso é executar "WP_Query" toda vez que precisar fazer um loop.

Mas há uma desvantagem: sempre que o WordPress executa um loop, ele envia consultas ao banco de dados, o que leva mais tempo e pode desacelerar o seu site.

Neste tutorial, mostrarei como usar uma consulta para mais de um loop. Você pode fazer isso com a consulta principal ou pode usar a mesma técnica com WP_Query.

Vamos explorar aspectos 3:

  • Crie um tema filho e um arquivo de modelo.
  • Crie uma peça de modelo para o conteúdo do loop.
  • Crie nossos loops.

Mas antes de descobrirmos juntos Como instalar um blog WordPress passos 7 et Como encontrar, instalar e ativar um tema WordPress em seu blog

Então, voltemos ao porquê de estarmos aqui.

O que você precisa

Para seguir este tutorial, você vai precisar de:

  • De uma instalação do WordPress para desenvolvimento (localmente).
  • Um editor de código.
  • Artigos em seu site com várias categorias atribuídas
  • o tema vinte e dezesseis do WordPress
  • Um tema filho de vinte e dezesseis instalado e ativado

Essa técnica também se adapta à sua situação e ao seu tema WordPress.

Criando um tema filho

Primeiro, criaremos o tema filho de vinte e dezesseis. Estou fazendo isso porque não quero alterar o tema principal.

Discover Como instalar um tema criança WordPress

Na sua pasta "wp-content / themes", crie uma nova pasta vazia, que você chamará de "tutor-theme". Mais tarde, você pode escolher o nome que mais lhe convier.

Nesta pasta, crie um arquivo chamado style.css e adicione o seguinte código:

/*

Nome do Tema: Tema Tuto

URI do tema: https://blogpascher.com

Descrição: Tema para dar suporte ao Tutorial sobre a execução de vários loops ao consultar o banco de dados apenas uma vez. Tema filho para o tema Twenty Sixteen.

Autor: Hervé

Autor URI: https://blogpascher.com

Predefinição: twentysixteen

Versão: 1.0

*/

@import url ("../twentysixteen/style.css");

Agora salve este arquivo e ative seu novo tema do WordPress.

O próximo passo é criar um arquivo de modelo para categorias, é nisso que vamos trabalhar.

Faça uma cópia do arquivo "archive.php" do tema WordPress "Twenty Sixteen". Não o mova, mas faça uma cópia. Renomeie como "category.php".

Para ir além, descubra Como gerenciar arquivos e pastas WordPress

Agora, esse será o arquivo de modelo para as categorias do seu site.

Criando um novo arquivo de modelo

A primeira etapa é criar um novo arquivo de modelo em nosso tema que conterá uma versão modificada do loop "vinte e dezesseis".

Vamos também consultar juntos Como colocar seu site WordPress no modo Manutenção

Na pasta do tema filho, crie uma subpasta chamada "inclui". E por dentro, crie um novo arquivo chamado "loop-category.php".

Em seguida, abra o arquivo "template-parts / content.php" nas pastas do tema pai (vinte e dezesseis) e encontre o seguinte código:

<artigo id = "post - <? php the_ID (); ?> "<? Php post_class (); ? >>

<header class = "entry-header">

<? php if (is_sticky () && is_home () &&! is_paged ()):?>

<span class = "sticky-post"> <? php _e ('Em destaque', 'vinte e dezesseis'); ?> </ Span>

<? php endif; ?>

<? php the_title (sprintf ('<h2 class = "entry-title"> <a href="%s »rel="bookmark">' esc_url (get_permalink ())), '</a> </ h2 > '); ?>

</ header> <! - .entry-header ->

<? php twentysixteen_excerpt (); ?>

<? php twentysixteen_post_thumbnail (); ?>

<div class = "entry-content">

/ * tradutores:% s: nome da postagem atual * /

the_content (sprintf (

__ ('Continue lendo <span class =' ​​screen-reader-text '>'% s '</ span>', 'vinte e dezesseis'),

get_the_title ()

));

wp_link_pages (matriz (

'before' => '<div class = "page-links"> <span class = "page-links-title">'. __ ('Páginas:', 'vinte e dezesseis'). </ Span>',

'depois' => '</ div>',

'link_before' => '<span>',

'link_after' => '</ span>',

Você está procurando os melhores temas e plugins do WordPress?

Baixe os melhores plugins e temas WordPress no Envato e crie facilmente o seu site. Já mais do que 49.720.000 downloads. [EXCLUSIVO]

'pagelink' => '<span class = "screen-reader-text">'. __ ('Página', 'vinte e dezesseis'). '</ span>%',

'separator' => '<span class = "screen-reader-text">, </ span>',

));

?>

</ div> <! - .entry-content ->

<rodapé da classe = "rodapé da entrada">

<? php twentysixteen_entry_meta (); ?>

edit_post_link (

sprintf (

/ * tradutores:% s: nome da postagem atual * /

__ ('Editar <span class = "screen-reader-text"> "% s" </ span>', 'vinte e dezesseis'),

get_the_title ()

),

'<span class = "link de edição">',

</ Span> '

);

?>

</ rodapé> <! - .entry-footer ->

</ article> <! - #post - ## ->

Copie esse código no novo arquivo "loop-category.php" do tema filho.

Editando o arquivo de parte do modelo

O loop "vinte e dezesseis" exibe mais do que eu preciso, então vou modificar esse código. Eu só quero mostrar o snippet e não o conteúdo, então excluiremos o conteúdo.

Qual é a diferença entre H1 e o título de SEO de um artigo do WordPress? Descubra consultando este artigo.

No seu novo arquivo loop-category.php, encontre este código e exclua-o:

<div class = "conteúdo da entrada">

/ * tradutores:% s: nome da postagem atual * /

the_content (sprintf (

__ ('Continue lendo <span class =' ​​screen-reader-text '>'% s '</ span>', 'vinte e dezesseis'),

get_the_title ()

));

wp_link_pages (matriz (

'before' => '<div class = "page-links"> <span class = "page-links-title">'. __ ('Páginas:', 'vinte e dezesseis'). </ Span>',

'depois' => '</ div>',

'link_before' => '<span>',

'link_after' => '</ span>',

'pagelink' => '<span class = "screen-reader-text">'. __ ('Página', 'vinte e dezesseis'). '</ span>%',

'separator' => '<span class = "screen-reader-text">, </ span>',

));

?>

</ div> <! - .entry-content ->

A outra etapa é substituir a função "twenty_sixteen_excerpt ()" pela função "the_excerpt ()", porque a versão vinte e dezesseis não fornece um link para o artigo completo.

Veja também Como visualizar os artigos recentes em uma categoria específica

Encontre esta linha:

? <Twenty_sixteen_excerpt Php (); ?>

Substitua por:

? <The_excerpt Php (); ?>

Também precisamos fazer algumas alterações nas tags de título.

Na parte do modelo, altere a linha:

<? php the_title (sprintf ('<h2 class = "entry-title"> <a href="%s »rel="bookmark">' esc_url (get_permalink ())), '</a> </ h2 > '); ?>

Edite as tags H2 para H3:

<? php the_title (sprintf ('<h3 class = "entry-title"> <a href="%s »rel="bookmark">' esc_url (get_permalink ())), '</a> </ h3 > '); ?>

Registre seu modelo. Em seguida, volte ao seu arquivo category.php e continuaremos com ele.

Criando loops

Primeiro, removeremos a inclusão do código "twenty sixteen" do nosso arquivo "category.php", pois precisaremos usar o novo arquivo.

No seu arquivo category.php, encontre este código:

get_template_part ('partes-modelo / conteúdo', get_post_format ());

E exclua o.

Então, criaremos os loops.

Neste exemplo, exibirei todos os artigos com a tag "content", usando a tag condicional "has_tag ()". Isso significa que terei que passar por três loops:

  • A primeira verificação se a consulta postou itens com essa tag.
  • Nesse caso, o segundo exibe os artigos com esse rótulo.
  • Um terceiro exibe artigos sem essa tag.

Crie facilmente seu site com Elementor

Elementor permite criar facilmente qualquer design de site com uma aparência profissional. Pare de pagar caro pelo que você pode fazer por si mesmo. [Grátis]

Entre cada loop, usarei rewind_posts () para retroceder as mensagens sem redefinir a consulta: sempre trabalhamos com a consulta principal.

O primeiro loop: verificação de artigos

No seu arquivo "category.php", localize o início do loop:

while (have_posts ()): the_post ();

Acima desta linha, defina uma nova variável chamada $ count:

$ Count = 0;

Em seguida, dentro desse loop, adicione este código:

// verifique se há alguma postagem com a tag »

$ tag = 'conteúdo';

if (has_tag ($ tag)) {

$ count + = 1;

}

Esse código verifica se as mensagens têm o rótulo "conteúdo" e, em seguida, adiciona o 1 ao contador, se sim.

O interior do loop será semelhante a este:

// Verifique as postagens no primeiro loop.

$ Count = 0;

while (have_posts ()): the_post ();

// verifique se há alguma postagem com a tag »

$ tag = 'conteúdo';

if (has_tag ($ tag)) {

$ count + = 1;

}

EndWhile;

O segundo loop: restaurar artigos com a tag

O próximo passo é fazer um loop para exibir itens com essa tag, apenas se houver algum.

Por exemplo, se o valor de $ count for maior que 0.

Descubra também Como personalizar o painel do WordPress para um cliente

Adicione esta condição ao loop:

if ($ count> 0) {

rewind_posts ();

eco '<h2> Posts marcados com'. $ tag. </ H2> ';

while (have_posts ()): the_post ();

if (has_tag ($ tag)) {

get_template_part ('inclui / loop', 'categoria');

}

// Finalize o loop.

EndWhile;

}

Esse código verifica se $ count é maior que zero e, se for o caso, rebobina os itens e executa o loop novamente. Para cada item, ele verifica se possui nossa etiqueta e, se houver, chama a parte do modelo que acabamos de criar.

O terceiro loop: veja o restante dos artigos

A saída será um loop final nos itens restantes. Se essa categoria não tiver um artigo com a tag "content", será exibido todos os itens da categoria.

Aprenda também Como criar um blog multi-autor e permitir que seus leitores para publicar artigos em seu blog

No seu segundo loop, adicione isto:

rewind_posts ();

// Second Loop - postagens que não estão com a tag 'content'

while (have_posts ()): the_post ();

if (! has_tag ($ tag)) {

get_template_part ('inclui / loop', 'categoria');

}

// Finalize o loop.

EndWhile; ?>

Esse último código rebobina os itens e executa o loop novamente. Dessa vez, ele verifica se um artigo não possui o rótulo "conteúdo" e, em seguida, exibe o conteúdo na "parte do modelo".

Crie facilmente sua loja online

Baixe gratuitamente o WooCommerce, os melhores plugins de e-commerce para vender seus produtos físicos e digitais no WordPress. [FREE]

Sugerimos também que você descubra Como adicionar uma impressão artigos de opções sobre WordPress

Agora você pode testar a página de artigos do seu blog. Lembre-se de que você pode alterar os filtros. Neste tutorial, usamos o "conteúdo" como um filtro de etiquetas, mas você pode usar o de sua escolha.

Descubra também alguns plugins premium do WordPress

Você pode usar outros plugins do WordPress para dar uma aparência moderna e otimizar a aderência do seu blog ou site.

Oferecemos a você aqui alguns plugins premium do WordPress que ajudarão você a fazer isso.

1. Social Wall Addon para UserPro

O UserPro pode ser muito mais divertido com um mural social. É isso que sua extensão Social Wall traz. Com a extensão Social Wall, você pode criar um mural no seu site e oferecer a seus membros uma maneira refrescante de interagir com a comunidade.

O plugin WordPress Social Wall permite que seus usuários: compartilhem mensagens entre eles, compartilhem imagens, comente nas postagens de outras pessoas, os usuários podem gostar ou não de uma mensagem, eles podem optar por exibir o mural apenas para usuários usuários logados ou para todos os usuários, os administradores podem excluir postagens ou comentários dos usuários etc.

Descarregar | Demo | hospedagem na web

2. Flipkart Affiliate Plus

O Flipkart Affiliate Plus é um plugin modular do WordPress que conecta seu site WordPress à API do Flipkart Affiliate.

Este plugin do WordPress facilita a importação de dados do produto do Flipkart e os atualiza diretamente no seu site. O Flipkart Affiliate Plus é o primeiro plugin do WordPress para a API oficial do Flipkart. Ao usá-lo, você não precisará usar uma API de terceiros. Você se beneficia totalmente do seu trabalho.

Descarregar | Demo | hospedagem na web

3. Google Analytics acionável para o WooCommerce

O Google Analytics acionável é um plug-in do WordPress que permite usar alguns dos melhores recursos do Universal Analytics, incluindo: Comércio eletrônico avançado e rastreamento de ID do usuário. Além disso, este plugin suporta o anonimato de endereços IP, o reembolso de produtos, o agrupamento de conteúdo, o rastreamento de formulários, etc.

Ao usar este plug-in do WordPress, você economizará tempo na integração de códigos complexos do Google Analytics para poder se concentrar no gerenciamento de seus dados.

Suas principais características são: instalação rápida e fácil, acesso a relatórios aprimorados de comércio eletrônico 9, a possibilidade de estudar como diferentes dispositivos são usados ​​pelo mesmo usuário e como as compras são feitas, a capacidade de analisar os produtos que são pagos com mais frequência, finalmente tomar medidas corretivas e muito mais.

Descarregar | Demo | hospedagem na web

Outros recursos recomendados

Também convidamos você a consultar os recursos abaixo para aprofundar o controle e controle do seu site e blog.

Conclusão

É isso aí! Isso é tudo para este tutorial bastante técnico. Espero que tenhamos sido explícitos sobre como usar corretamente o WP_Query no WordPress. Não hesite em compartilhe a dica com seus amigos em suas redes sociais.

No entanto, você também poderá consultar nossos Ressources, se você precisar de mais elementos para realizar seus projetos de criação de sites da Internet, consultando nosso guia no site Criação de blog WordPress.

Mas enquanto isso, conte-nos sobre o seu Comentários e sugestões na seção dedicada.

...

Este artigo contém comentários 7
  1. ___________ ________ _____ ____________
    | Artigo 1 | | artigo 2 | | _A3_ | | |
    | __________ | | _______ | _____ Artigo 6 |
    ______________________ | 5 | |
    | _________ 4 _________ | | ____ | | ___________ |

  2. Olá Blair
    obrigado por estes tutoriais Parfais,
    Peço um pouco de ajuda por favor.
    Crio meu próprio tema wordpres (html / css) e tenho um problema que tentarei desenvolver: planejo criar um site semelhante ao msn.com, meu site será dividido em várias divisões (seções ) que são: notícias, entretenimento, saúde, estilo de vida ... etc. isto é, desejo realizar um primeiro grupo de artigos e um segundo grupo, um terceiro ... etc. mas mostre todos os grupos na mesma página e cada grupo pertence a uma categoria (nicho). Gostaria de saber se este back office wordpress pode gerenciar o conteúdo de cada tópico separadamente? com o loop wordpress // Conteúdo da postagem Desculpe, não foram encontradas postagens! Recebo uma mistura de itens:
    que é dizer que o meu último artigo escrito é colocado diretamente sobre a primeira seção que são notícia, enquanto este é um artigo que pertence a tal estilo de vida.
    Me deparei com esta página https://codex.wordpress.org/fr:La_Boucle Acho que a parte múltiplos loops pode resolver o meu problema!
    Espero que você entenda o que estou tentando dizer

    Agradecemos antecipadamente pela sua resposta,
    Atenciosamente,

    1. Bom Dia,
      Eu acho que você complicar o seu trabalho para nada. Já que eu entendo é que você quer organizar os itens em categorias (categoria), e cada item pode pertencer a um nicho, que pode ser categorias relativas. Sim, o laço pode ajudá-lo a fazê-lo, e é uma impressionante simplicidade.
      Coragem!

      1. Bonjour.
        Em primeiro lugar, obrigado pela sua resposta rápida. Eu acho que o tema que acabei de criar não é mais compatível com o wordpress e é daí que vem o problema.
        em comentários feitos desde a sua não apoiar a imagem anexada eu vou explicar por desenho:
        aqui é um site de categorias
        ___________ ________ _____ ____________
        | Artigo 1 | | artigo 2 | | _A3_ | | | então imagine que cada artigo é
        | __________ | | _______ | _____ Artigo 6 | representado por um bloco; então nós temos o 6
        ______________________ | 5 | | artigos (cada bloco contém a imagem
        | _________ 4 _________ | | ____ | | ___________ | e o título de um artigo em particular)

        Meu verdadeiro problema, Sr. Blair, é que não consigo concluir meus artigos para que eles possam passar do bloco 1 para o bloco 6, ou seja, quando adiciono um novo artigo e que Eu o publico. Quero que este último substitua o artigo 1 como em todos os temas existentes.
        - Eu acho que é irrealizável, já que cada post (artigo) tem suas próprias propriedades, como localização, altura, largura ... etc, o que você acha?
        Claro que a idéia é um pouco obscura com este esquema, caso contrário, se eu não incomodá-lo e você gostaria de me ajudar, você tem meu e-mail (você só precisa enviar um e-mail contendo seu nome).

        Obrigado novamente por suas repensa

        1. Boa noite, nesse caso em particular, você terá que pular com variáveis ​​do tipo "int", então, a cada vez que o loop de loop, você incrementar a variável e, dependendo do valor da variável, você pode alterar o exibição do artigo. Por exemplo:

          if ($ i == 1) {
          // seu código aqui
          } Else if ($ i == 2) {
          // tais
          }
          $ I ++;

          Infelizmente, eu não posso ajudá-lo pessoalmente neste momento.

  3. [...] Neste tutorial eu vou te ensinar como usá-los de forma mais eficaz WP_Query consultas sobre WordPress. [...]

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios estão marcados com *

Este site usa Akismet para reduzir indesejados. Saiba mais sobre como seus dados de comentários são usados.

De volta ao topo