PHP: use a API do WordPress para construir um shortcode para listar subpáginas
Estamos trabalhando em uma implementação bastante complexa para um cliente corporativo agora. O site está sendo construído em WordPress, mas tem uma tonelada de sinos e assobios. Freqüentemente, quando estou fazendo esse tipo de trabalho, gosto de salvar o código customizado para reaproveitar posteriormente em outros sites. Neste caso, achei que era uma função muito útil, queria compartilhá-la com o mundo. Estamos usando o Tema Avada WordPress com o Fusion Page Builder como um tema pai, e implantando um pouco de código personalizado em nosso tema filho.
O WordPress já tem algumas funções em sua API que podem ser usadas para listar subpáginas, como wp_list_pages e get_pages. O problema é que eles não retornam informações suficientes se você espera criar dinamicamente uma lista com um monte de informações.
Para esse cliente, eles queriam publicar descrições de empregos e ter a lista de vagas abertas gerada automaticamente em ordem decrescente pela data de publicação. Eles também queriam exibir um trecho da página.
Então, primeiro, tivemos que adicionar suporte a excertos ao modelo de página. Em functions.php para seu tema, adicionamos:
add_post_type_support ('página', 'excerto');
Em seguida, precisávamos registrar um shortcode personalizado que geraria a lista de subpáginas, links para elas e o trecho para elas. Faça isso, temos que usar o WordPress loop. Em functions.php, adicionamos:
// Listar subpáginas em uma função de lista dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'Sem registros', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'página', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publish_date', 'pedido' => 'DESC' ,); $ parent = new WP_Query ($ args); if ($ parent-> have_posts ()) {$ string. = $ content. ' '; while ($ parent-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_the_title ().' '; if (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; fim; } outro {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); return $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');
Agora, o shortcode pode ser implementado em todo o site para mostrar as páginas filhas com um link e um trecho. Uso:
[list_subpages aclass = "botão" ifempty = "Desculpe, atualmente não temos vagas de emprego."] Lista de empregos [/ list_subpages]
O resultado é uma lista desordenada e limpa de empregos publicados, que são páginas secundárias abaixo da página de carreiras.
Se não houver trabalhos publicados (sem páginas filhas), ele publicará:
Desculpe, no momento não temos vagas de emprego.
Se houver trabalhos publicados (páginas filhas), ele publicará:
Lista de empregos:
- Última página infantil - Trecho da página infantil
- Próxima página infantil - Trecho da página infantil
- Próxima página infantil - Trecho da página infantil