Fábio Bastos - Desenvolvedor WordPress em BH. Desenvolvimento Front-end e Back-End

Desenvolvedor WordPress, Web Designer e Programador

WordPress: Como mostrar páginas filhas dentro do post com apenas um shortcode


Um recurso corriqueiro durante o processo de desenvolvimento de temas para WordPress é a criação de código para mostrar as “páginas filhas” de uma página que está sendo visitada pelo usuário.

Um exemplo: muitas vezes criamos uma página apenas para ser um recipiente para outras páginas, criando uma hierarquia e facilitando o mapa do site. Mas se o cliente pedir que essas “páginas mãe” apresentem um conteúdo e depois tenha uma lista das “páginas filhas”, mas ele queira escolher quando isso ocorre ou não? Nesse caso, podemos criar um shortcode e ensiná-lo a usar quando achar necessário listar páginas filha numa página qualquer.

Como criar um shortcode no WordPress?

Simples, um shortcode não é nada mais do que uma simples função que retorna o que desejarmos. Por exemplo, se queremos um shortcode para escrever os dados da empresa em qualquer lugar do post, basta inserir o seguinte código em seu arquivo functions.php.

function escrever_dados() {
              $dados = “A Empresa XPTO está em Belo Horizonte, no Endereço Rua XMLS... etc...;
return $dados;
}
add_shortcode(‘escrever_dados', 'escrever_dados');

Pronto! Aqui criamos o shortcode “escrever_dados” que, quando usado em um post, vai escrever a frase “A Empresa XPTO está em Belo Horizonte, no Endereço Rua XMLS… etc…”. É simples, mas queremos mais informação nesse shortcode, pois vamos trazer dados direto do banco de dados e fazer um loop para apresentar as “páginas filhas” da página atual.

 

Agora vamos criar o shortcode com o loop já pronto para ser utilizado

Atenção aos comentários, que explicam cada parte importante do código. Novamente, esse código deve ser inserido no arquivo functions.php

function paginas_filhas() {
 //aqui chamamos a global $post que traz os dados da página atual.
 global $post;
 
 //Aqui implementamos os argumentos da query, que escolhe o post_parent como a página atual, ou seja, o ID do post, e explica que queremos somente o tipo de post (post_type) page.
 $args = array(
 'post_parent' => $post->ID,
 'post_type' => 'page'
 );
 
 //Aqui a query
 $filhas = new WP_query($args);
 
 // Aqui vem o nosso loop que trará os dados de saída! Se a variável $filhas for verdadeira, ela traz os dados enquanto houver. se não houve filhas, escreve "Não há páginas Filhas"
if ($filhas->have_posts()) :
$saida = '<ul>';
 while ($filhas->have_posts()) : $filhas->the_post();
 $saida .= '<li><strong><a href="'.get_permalink().'">'.get_the_title().'</a></strong>
 <p>'.get_the_excerpt().'<br />
 <a href="'.get_permalink().'">Continue Lendo</a></p></li>';
 endwhile;
 $saida .= '</ul>';
 else :
 $saida = '<p>Não há páginas Filhas.</p>';
 endif;
// Aqui resetamos a Query, para não ter problemas com o resto do conteúdo do template.
 wp_reset_postdata();
// Por fim, retornamos a variável $saida.
 return $saida;
}
//Agora criamos o shortcode usando a função paginas_filhas(). Obs: o shortcode terá o mesmo nome da função, ou seja [paginas_filhas]
add_shortcode('paginas_filhas', 'paginas_filhas');

Dessa forma, basta usar o shortcode [paginas_filhas] dentro do editor do WordPress, nas páginas desejadas, e ele gerará uma lista não ordenada com as páginas. Para mudar o layout e disposição das páginas filhas, podemos trazer mais dados como the_post_thumbnail e outros dados, basta criatividade!

Obs: Me inspirei em um post do wptutsplus para criar esse. É um site com muitas dicas para todo desenvolvedor wordpress


Tags: ,

Uma resposta para “WordPress: Como mostrar páginas filhas dentro do post com apenas um shortcode”

  1. Gabi disse:

    Obrigada!
    estava super a procura, me salvou a vida!

    :)

Deixe uma resposta