PHP: use a API do WordPress para construir um shortcode para listar subpáginas

PHP para WordPress

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 personalizado para reaproveitá-lo 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ê deseja 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:

O que você acha?

Este site usa o Akismet para reduzir o spam. Saiba como seus dados de comentário são processados.