Avançar para conteúdo

Tudo para WordPress

Plugins, Temas, dicas de WordPress e muito mais para você que busca informação sobre este excelente CMS!

  • Twitter
  • Facebook
  • Google+
  • RSS
Entenda com funciona Assine nosso RSS

Como fazer um site institucional sem criar páginas no painel

Publicado em 01/04/2013 às 10h00 por Fernando Daciuk

404php

Precisei fazer isso em um site recentemente: Era um site institucional onde as páginas internas teriam apenas algumas áreas que poderiam ser modificadas pelo cliente, e não a página toda.

Como fazer isso sem criar as páginas pelo painel do WP, impedindo que o cliente detone o site todo?

Let’s go!

 

 

O problema

Quando você cria um site institucional, você vai precisar de páginas estáticas. O padrão é criar essas páginas pelo painel do WP, e todo o conteúdo da página estaria dentro do editor, para o cliente mudar as fontes, cores, deixar tudo em caixa alta, fazendo aquele seu layout caprichado ficar a coisa mais linda do mundo. Que orgulho! #not

 

Solução 1 (não tão boa)

Uma solução para isso é usar o recurso de Page Templates do WP. Você cria um arquivo qualquer e coloca um comentário no início do arquivo como esse:

Então você cria todo o código dentro desse arquivo e tem “parte” do seu problema resolvido. Porque “parte”?

Porque você ainda assim vai precisar criar a página pelo painel e setar a “Minha página personalizada” como Modelo, para se favorecer das URLs amigáveis.

– Então, qual seria melhor solução?

A página de erro 404!

Really?

 

Solução 2 (a ideal) – Criando páginas personalizadas usando a 404.php

Calma, você não leu errado e vou explicar porque.

A página de erro 404 é usada sempre que você acessa uma URL inválida no seu site. O WordPress trabalha com query_vars para identificar a página que você está tentando acessar.

Vamos brincar um pouco antes de partir pra solução:

Na sua página de erro 404.php, coloque o seguinte código:

Depois, tente acessar uma url que não existe no seu site, por exemplo: http://seusite.com.br/pagina-qualquer

Você vai ter um resultado mais ou menos como esse na sua tela:

Repare ali onde diz pagename. É a query_var do WP dizendo a ele pra procurar essa página. Como ela não existe, você foi redirecionado para sua página de erro 404. E ali você faz o que quiser. Eu normalmente redireciono o usuário à home do site, deixando esse código na minha 404.php:

Mas nesse caso, nós vamos usar a “pagename” para acessar nossa página sem precisar criá-la no painel. Para pegar o valor de pagename, utilize a função get_query_var( ‘pagename’ ), que nesse caso vai retornar “pagina-qualquer”.

Simplesmente o que vamos fazer é:

  1. Setar um array com as páginas que queremos criar;
  2. Verificar se a pagename se refere a alguma dessas páginas e direcionar o usuário para ela;
  3. Se a URL realmente não existir e não for nenhuma das nossas páginas institucionais, vamos direcionar o usuário para a home do site.

Vamos criar duas páginas institucionais: Sobre e Contato. Essas páginas serão acessadas pelas URLs: site.com.br/sobre e site.com.br/contato, respectivamente.

Primeiro certifique-se que essas páginas não existem no seu site, e realmente levam à página 404.php.

Feito isso, apague tudo o que estiver no seu 404.php e coloque o seguinte código:

(ou veja o código aqui)

$pages é o seu array com as páginas institucionais que você quer criar. Coloque nesse array quantas forem necessárias.

Depois é feito uma verificação para ver se a URL solicitada corresponde a alguma dessas páginas. Se o usuário tentar acessar a página site.com.br/sobre, será usado o arquivo page-sobre.php como modelo. Certifique-se de ter esse arquivo criado na raiz do seu tema (para todas as páginas que você for gerar dessa forma, deve ter o arquivo correspondente, com o prefixo “page-“).

O prefixo “page-” utilizado não é obrigatório, mas ajuda a manter a organização dos arquivos. Você poderia usar “pagina-” ou qualquer outra coisa que julgar melhor.

Voltando: Se a URL solicitada não for nenhuma página institucional e não existir realmente, aí sim a 404.php vai fazer o trabalho dela. Nesse caso, direcionar para a home.

 

Bônus: removendo a classe “error404” do body e colocando uma classe “page-suapagina”

Pra deixar o nosso código ainda mais interessante, vamos definir uma classe no body com o nome da nossa página institucional, para que possamos utilizar estilos específicos para ela.

Você já deve estar usando na sua tag <body> a função “body_class()” não? Se não estiver, inclua lá:

No seu functions.php, inclua a seguinte função:

(ou veja o código aqui)

Essa função vai fazer o seguinte: Se você estiver na home (is_home() || is_front_page()), será incluída a classe “page-home”. Se estiver na página de erro 404 (is_404()), vai remover a classe “error404”, definindo um array vazio para $classes e vai acrescentar a classe “page-suapagina”.

Em um próximo post eu explico como criar as “áreas geenciáveis” para cada página. Por enquanto é isso :)

E então, gostaram da dica? Tem uma forma melhor de fazer? Comenta aí!

9 pessoas comentaram o artigo

  • Hugo comentou em 2 de abril de 2013.

    Amigo, era só criar um arquivo igual ao “page.php” mas com nome “page-slug.php” e alterar onde fosse necessário.

    No caso substituir “slug” pelo slug da página.

    Responder esse usuário
    • Fernando Daciuk comentou em 6 de abril de 2013.

      Olá Hugo! Então.. não sei se você chegou a ler o post todo, ou talvez eu não tenha deixado muito claro. A ideia é criar páginas no WP sem precisar criar pelo Painel, entende?

      Em um projeto onde se trabalham duas pessoas ou mais, fica complicado toda vez ter que ficar atualizando a base de dados somente por causa de uma página ou outra que foi criada pelo Painel.

      Existem outras formas também de fazer isso: usando WP_Rewrite, por exemplo. Mas com certeza é muito mais complexo de se fazer e, se for usar o nome da página como slug logo depois do site (site.com.br/sobre) por exemplo, você vai ter que fazer todas as verificações que o WP faz para templates, manualmente.

      Da forma como você citou, ainda assim seria necessário criar a página no Painel. :)

      Responder esse usuário
  • Walter Reis comentou em 15 de julho de 2013.

    Fernando, ótimo post, tem previsão de quando você vai explicar estas áreas gerenciáveis que você cita no post?

    Responder esse usuário
    • Fernando Daciuk comentou em 17 de julho de 2013.

      Olá Walter, que bom que gostou! xD

      Tenho alguns ajustes a fazer ainda nesse post (enviado por alguns usuários no grupo WordPress Brasil no Facebook), então vou escrever o outro artigo falando sobre como criar as áreas gerenciáveis :)

      Responder esse usuário
      • Wanderson Dantas comentou em 7 de agosto de 2013.

        Cara, se você mandar como fazer as areas gerenciaveis vai resolver 98% dos meus problemas. Seu tutorial é muito bom!!!

        Responder esse usuário
  • Leandro comentou em 22 de junho de 2015.

    Olá Fernando,

    Estou fazendo um site institucional com o WordPress, é meu primeiro projeto WP.

    Estou com uma tremenda dificuldade de tornar a página inicial do site editável para o cliente no dashboard do WordPress. Preciso que o cliente consiga editar os textos do index.php, mas ainda não achei uma solução razoável.

    Pensei em fazer as sections do meu index.php fossem chamadas de pages customizadas e depois criar campos personalizados nessa pages, mas ainda sim me parece ruim.

    Se puder dizer como fazer esses textos serem editáveis de uma forma mais intuitiva, eu agradeço!

    Ah, ótima palestra no wordcamp! =D

    Responder esse usuário
    • Fernando Daciuk comentou em 11 de julho de 2015.

      Olá Leandro!

      O esquema de fazer o gerenciamento das páginas, basicamente pode ser feito usando metaboxes. Você adiciona metaboxes específicas para cada página e só chama essas informações na sua home :)

      Se forem muitas sessões diferentes na home, você pode criar CPTs para essas sessões. Um exemplo que cairia bem seriam banners, por exemplo.

      Imagine na home do site que você tem alguns banners apontando para artigos internos, ou mesmo de publicidade, com links para fora do seu site. Você consegue fazer um CPT e usar metaboxes e campos personalizados para tratar essas informações :)

      Esse próximo artigo vai ficar um pouco grande, mas em breve quero escrevê-lo, mostrando o passo-a-passo de como fazer isso :D

      Responder esse usuário

Participe e deixe o seu comentário!

Procurando Temas?

Acesse o arquivo de Temas WordPress