Suporte » Temas » Criando primeiro tema – Archive não traz os posts

  • Resolvido maykelesser

    (@maykelesser)


    Boa tarde!
    Estou criando meu primeiro tema no WordPress, e estou tendo uma série de dúvidas, porém com muita pesquisa estou conseguindo resolver. Porém, uma tem me tirado o sono:

    Acessando a página /blog, ele não está trazendo o archive.

    As etapas que fiz são as seguintes:

    Criei o tema com a seguinte estrutura:
    Arquivos do tema

    Configurei em “Leitura” para que a página com posts seja a “Blog” (criada anteriormente).
    Reading Settings

    Meu “archive.php” está da seguinte maneira:

    <?php get_header(); ?>
    <?php while ( have_posts() ) : the_post(); ?>
        <div class="container">
            <h1><?php the_title(); ?></h1>
            <div class="post-content">
                <?php the_content(); ?>
            </div>
            <a href="<?php the_permalink(); ?>">More!</a>
        </div>
    <?php endwhile; ?>
    <?php get_footer(); ?>

    O que estou fazendo de errado? Ao clicar em /blog, ele está direcionando para minha home.

Visualizando 12 respostas - 1 até 12 (de um total de 12)
  • Moderador Felipe Elia

    (@felipeelia)

    Oi @maykelesser,

    O caminho que o WordPress percorre para descobrir qual template usar para a “posts page” não passa pelo archive.php, ele começa na home.php como você pode conferir nessa imagem:

    https://developer.wordpress.org/files/2014/10/template-hierarchy.png

    Essa imagem sempre me ajuda a escolher qual arquivo criar/editar, espero que também sirva para você 🙂

    Não esqueça de voltar se ficar com alguma dúvida e, se for o caso, marcar seu tópico como resolvido, ok?

    Criador do tópico maykelesser

    (@maykelesser)

    Olá @felipeelia, tudo bem?

    Eu já tinha visto este fluxograma, mas sinceramente, não entendi muito. Eu devo criar TODAS estas páginas? Acessei um tema de exemplo do próprio WordPress (o twentyseventeen) e o mesmo não tem o arquivo home.php… mas tem o archive. Hehe…

    Moderador Felipe Elia

    (@felipeelia)

    Oi @maykelesser! Então, o fluxograma na verdade diz quais arquivos o WordPress tenta pegar, indo da esquerda para a direita. No fim das contas, se ele não encontrar arquivo nenhum ele pega a index.php, entendeu?

    No caso do fluxo que começa em “Blog Posts Index Page”, ele começa tentando o home.php e, se não existir, ele pega a index.php. No caso de arquivo de uma categoria, por exemplo, ele tenta category-$slug.php, se não houver ele tenta category-$id.php, se não existir ele tenta o category.php, em seguida o archive.php e, por último, o index.php. É por esse motivo que o tema mais simples possível deve ter, pelo menos, o index.php 🙂 Ficou mais fácil de entender?

    Criador do tópico maykelesser

    (@maykelesser)

    Olá @felipeelia! Obrigado pela resposta!

    Sim, agora está ficando um pouco mais claro. Também estou lendo a página de hierarquia de modelos pra ver se clareia a mente. Como sou bem iniciante no WordPress, muitos dos recursos eu não tenho familiaridade! Então, resolvi botar a mão na massa que desta maneira, aprendo melhor.

    Bom, vamos lá. Montei a minha index.php como se fosse realmente a página inicial. Ela é a página estática de abertura do site, e a configurei nas “Configurações de Leitura” também. Por via das dúvidas, dupliquei ela e a nomeei front-page.php também (acredito que isso não vá mudar nada, mas…).

    O que não consigo entender é o caminho para chegar no archive.php. Criei o arquivo, configurei a exibição da página /blog para a Página de Posts (conforme mostro abaixo) e não me traz nada.

    Reading Settings

    Como posso contornar para que, ao clicar na página Blog criada, caia no archive.php?

    Moderador Felipe Elia

    (@felipeelia)

    Oi @maykelesser,

    Com essa configuração a página Blog vai usar o template home.php ou, se ela não existir, o arquivo index.php (é o fluxo que começa em Blog Posts Index Page). Se você precisa MUITO que a página blog siga o que é exibido em archive.php você pode criar o arquivo home.php e colocar dentro dele

    <?php get_template_part( 'archive' );

    Assim ele vai exibir o que tudo conforme o archive.php.

    Não esqueça de voltar para dizer se deu certo e, se for o caso, marcar seu tópico como resolvido, beleza?

    Criador do tópico maykelesser

    (@maykelesser)

    Olá @felipeelia,

    Infelizmente não deu certo. Com isso, a minha página inicial (que é a index) também foi jogada para o archive. Tentei até fazer uma condicional verificando se a página ativa é a home ou não, mas sem sucesso.

    <?php
    	
    	if(is_home()){
    		get_template_part( 'index' );
    	}
    	else{
    		get_template_part( 'archive' );
    	}
    
    	die();
    
    ?>
    • Esta resposta foi modificada 7 anos, 2 meses atrás por maykelesser.
    Moderador Felipe Elia

    (@felipeelia)

    No lugar de is_home tente com is_front_page 😉

    Criador do tópico maykelesser

    (@maykelesser)

    @felipeelia, obrigado pela sua paciência! Tem sido um aprendizado!

    Testei a troca, e desta vez, ao acessar a página inicial, está trazendo o archive. Ao acessar o blog, dá certo, mas aí entramos no mesmo problema anterior, só que invertido!

    Na verdade, quando fiz o código acima, ele traz normalmente a index, mas não traz o archive – acaba trazendo a index também.

    Resumindo:

    Utilizando este código em home.php

    <?php
    	
    	if(is_home()){
    		get_template_part( 'index' );
    	}
    	else{
    		get_template_part( 'archive' );
    	}
    
    	die();
    
    ?>
    • Acessando “/”: OK, cai na index.
    • Acessando “/blog”: Cai na index.

    Utilizando este código:

    <?php
    	
    	if(is_front_page()){
    		get_template_part( 'index' );
    	}
    	else{
    		get_template_part( 'archive' );
    	}
    
    	die();
    
    ?>
    • Acessando “/”: Cai no archive.
    • Acessando “/blog”: OK, cai no archive.
    Moderador Felipe Elia

    (@felipeelia)

    Puxa @maykelesser, peço até desculpas por tanta tentativa e erro!

    Tente criar um arquivo front-page.php e nele coloque:

    <?php get_template_part( 'index' );

    na home.php deixe apenas

    <?php get_template_part( 'archive' );

    Criador do tópico maykelesser

    (@maykelesser)

    @felipeelia, você não tem o que se desculpar! Já está fazendo um favor enorme! Agradeço de coração.

    Fazendo esta configuração, ambas “/” e “/blog” caem no archive.

    Cara, não sei se o problema é a criação do tema desde o início. Ele está bem simples, coloquei ele num FTP caso a analise dos códigos seja mais eficaz. Mas sinta-se livre para não fazer nada também – mas talvez vendo todo o escopo, te ajude a me ajudar 😀 Você não precisa mexer em nada no código, só apontar se possível o que estou fazendo de errado!

    Como é um tema de teste que estou criando, tem muita coisa pra aprender ainda.

    Moderador Felipe Elia

    (@felipeelia)

    Oi @maykelesser, não precisa agradecer 🙂

    Coloquei o tema em uma instalação WP que eu tenho de teste aqui e funcionou corretamente: /blog e / exibem coisas diferentes. Tem certeza que está mexendo no tema certo? Está usando algum plugin de cache? Ah, e tente também limpar o cache do seu navegador, é difícil, mas pode ser isso. Boa sorte!

    Criador do tópico maykelesser

    (@maykelesser)

    Oi @felipeelia, descobri o problema.

    Realmente, você estava certo! Eu mantenho esta instalação WP online, e outra na minha máquina local – esta última não tinha criado a página Home. Criei ela e funcionou! Apenas estava vendo no lugar errado.

    Muito, mas muito obrigado novamente! Problema resolvido! 😀

    • Esta resposta foi modificada 7 anos, 2 meses atrás por maykelesser.
Visualizando 12 respostas - 1 até 12 (de um total de 12)
  • O tópico ‘Criando primeiro tema – Archive não traz os posts’ está fechado para novas respostas.