WordPress: como listar páginas filhas usando um shortcode
Reconstruímos a hierarquia de sites para vários de nossos WordPress clientes, e uma das coisas que tentamos fazer é organizar as informações de forma eficiente. Para fazer isso, muitas vezes queremos criar uma página mestra e incluir um menu que liste automaticamente as páginas abaixo dela. Uma lista de páginas secundárias ou subpáginas.
Infelizmente, não há nenhuma função ou recurso inerente para fazer isso no WordPress, então desenvolvemos um shortcode para adicionar ao site do cliente. Veja como você pode usar o shortcode com todas as suas variáveis preenchidas em uma postagem ou página do WordPress:
[listchildpages ifempty="No child pages found" order="ASC" orderby="title" ulclass="custom-ul-class" liclass="custom-li-class" aclass="custom-a-class" displayimage="yes" align="aligncenter"]
Divisão de uso:
ifempty="No child pages found"
: Este texto será exibido se não houver páginas filhas disponíveis.order="ASC"
: classifica a lista de páginas filhas em ordem crescente.orderby="title"
: Isso ordena as páginas secundárias por título.ulclass="custom-ul-class"
: Aplica a classe CSS “custom-ul-class” ao<ul>
elemento da lista.liclass="custom-li-class"
: Aplica a classe CSS “custom-li-class” a cada<li>
elemento na lista.aclass="custom-a-class"
: Aplica a classe CSS “custom-a-class” a cada<a>
(link) elemento na lista.displayimage="yes"
: inclui a imagem em destaque de cada página secundária na lista.align="aligncenter"
: Isso alinha as imagens em destaque no centro.
Insira este código de acesso diretamente na área de conteúdo de uma postagem ou página do WordPress onde deseja que a lista de páginas filhas apareça. Lembre-se de personalizar os valores de cada atributo para se adequar ao design e à estrutura do seu site WordPress.
Além disso, se você quiser pequeno excerto descrevendo cada página, o plug-in habilita trechos nas páginas para que você possa editar o conteúdo nas configurações da página.
Listar código curto de páginas secundárias
function add_shortcode_listchildpages($atts, $content = "") {
global $post;
$string = '';
$atts = shortcode_atts(array(
'ifempty' => '<p>No Records</p>',
'order' => 'DESC',
'orderby' => 'publish_date',
'ulclass' => '',
'liclass' => '',
'aclass' => '',
'displayimage' => 'no',
'align' => 'alignleft'
), $atts, 'listchildpages');
$args = array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => $post->ID,
'orderby' => $atts['orderby'],
'order' => $atts['order']
);
$parent = new WP_Query($args);
if ($parent->have_posts()) {
$string .= $content.'<ul class="'.$atts['ulclass'].'">';
while ($parent->have_posts()) : $parent->the_post();
$string .= '<li class="'.$atts['liclass'].'">';
$true = array("y", "yes", "t", "true");
$showimage = strtolower($atts['displayimage']);
if (in_array($showimage, $true)) {
if (has_post_thumbnail($post->ID)) {
$image_attributes = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail');
$string .= '<a class="'.$atts['aclass'].'" href="'.get_permalink().'" title="'.get_the_title().'">';
$string .= '<img src="'.$image_attributes[0].'" width="'.$image_attributes[1].'" height="'.$image_attributes[2].'" alt="'.get_the_title().'" class="'.$atts['align'].'" /></a>';
}
}
$string .= '<a class="'.$atts['aclass'].'" href="'.get_permalink().'" title="'.get_the_title().'">'.get_the_title().'</a>';
if (has_excerpt($post->ID)) {
$string .= ' - '.get_the_excerpt();
}
$string .= '</li>';
endwhile;
$string .= '</ul>';
} else {
$string = $atts['ifempty'];
}
wp_reset_postdata();
return $string;
}
add_shortcode('listchildpages', 'add_shortcode_listchildpages');
A função add_shortcode_listchildpages
adiciona um shortcode personalizado
No Records
- Variável de postagem global: A função começa declarando a variável global
$post
, que é usado para acessar informações sobre a postagem ou página atual no WordPress. - Atributos de código curto: O
shortcode_atts
função configura valores padrão para os atributos de shortcode. Os usuários podem substituí-los ao inserir o código de acesso. Os atributos incluem:ifempty
: Mensagem a ser exibida se não houver páginas filhas.order
: Ordem das páginas filhas (ASC ou DESC).orderby
: Critérios para ordenar páginas filhas (por exemplo,publish_date).ulclass
: classe CSS para o<ul>
elemento.liclass
: classe CSS para o<li>
elementos.aclass
: classe CSS para o<a>
elementos (âncora).displayimage
: se deseja exibir a imagem em destaque das páginas filhas.align
: Alinhamento da imagem em destaque.
- Argumentos de consulta: A função configura um
WP_Query
para recuperar todas as páginas filhas da página atual, classificadas de acordo com os atributos especificados. - Gerando a lista:
- Se forem encontradas páginas filhas, a função constrói uma lista HTML não ordenada (
<ul>
), com cada página filha representada por um item de lista (<li>
). - Dentro de cada item da lista, a função verifica se a imagem em destaque deve ser exibida com base no
displayimage
atributo. - A função também cria um link para cada página secundária usando o
<a>
tag e, se disponível, adiciona o trecho da página secundária.
- Se forem encontradas páginas filhas, a função constrói uma lista HTML não ordenada (
- Saída ou mensagem padrão: se não houver páginas filhas, a função gera a mensagem especificada pelo
ifempty
atributo. - Redefinir dados de postagem: O
wp_reset_postdata
função redefine a consulta do WordPress, garantindo que o global$post
o objeto é restaurado para a postagem da consulta principal original. - Registro de código curto: Finalmente, o
add_shortcode
registros de funçãolistchildpages
como um novo shortcode, vinculando-o aoadd_shortcode_listchildpages
função, disponibilizando-a para uso em posts e páginas.
Esta função é útil para listar subpáginas dinamicamente em uma página pai, melhorando a navegação e a organização em um site WordPress. Eu recomendo adicioná-lo a um plugin personalizado se você quiser adicioná-lo ao seu site WordPress. Ou… você pode baixar o plugin que publiquei.
Listar plug-in de código de acesso de páginas filhas
Eu finalmente consegui empurrar o código para um plugin para torná-lo mais fácil de instalar e utilizar, e o Plug-in de shortcode List Child Pages foi aprovado pelo WordPress hoje! Faça o download e instale-o – se gostar, faça um comentário!