Arquivo de tema para todas as páginas que são filho de uma página específica Wordpress Pergunte
Personalize a saída anterior_post_link Fazer o backup da pasta de carregamentos fora do conteúdo do wp? Melhor ação para chamar add_rewrite_rule JQuery Datepicker Blackout Dates Adicione botões personalizados com ações personalizadas na canvas Editar publicação no WordPress? get_comment_link sem base de paginação no URL retornado? Como obter uma categoria em uma class de item de lista Duas palavras-chave de descrição All in One SEO WordPress Como usar $ filename = basename (get_attached_file ($ data-> ID) Como adicionar links no arquivo .po (idioma) no wordpress? Exibir (e gerenciar) imagens de webcam? Mostrar tipos de publicações personalizadas para filhos em single- {parent} .php? Separar por categoria Tipo de postagem wp_trash_post hook – problema com atualização de página se usando wp_die Como replace a tag de título para os pontos finais do woocommerce?
É possível dentro da hierarquia de nomenclatura do arquivo de tema atual definir um modelo para todas as páginas que são filho de uma página específica? Por exemplo, nesta navegação:
E-mails de trabalho do Cron em branco
É aceitável que um tema do WordPress não aceite widgets?
Melhor prática do prefixo, devemos usar o nome da estrutura ou o nome do tema?
Como posso exibir / ocultar determinado conteúdo com base em um campo de opção de tema?
Declaração de mensagem
Existe alguma maneira de fazer um arquivo de tema chamado algo como:
Isso seria aplicado automaticamente a todas as páginas que são crianças de Quem Somos?
Fui com uma versão modificada do que sugeriu Bainternet. Aqui está a function descendente que acabei com:
function is_descendant($ancestor, $tofind = 0) { global $post; if ($tofind == 0) $tofind = $post->ID; $arrpostids = get_post_ancestors($tofind); $arrpostslugs = array(); foreach($arrpostids as $postid) { $temppost = get_post($postid); array_push($arrpostslugs, $temppost->post_name); } return (in_array($ancestor, $arrpostids) || in_array($ancestor, $arrpostslugs)); } // Example use: is_descendant('about-us'); is_descendant(123); is_descendant('about-us', 134);
Isso me permite verificar se é um descendente usando a ID do pai ou o slug. Eu estava preocupado que usar apenas o ID pode levar a um problema se uma página principal tivesse sido acidentalmente destruída, não haveria uma boa maneira de conseguir que isso funcionasse novamente sem ter que editar os arquivos do Tema. Com a lesma, pelo menos, há a opção de apenas entrar e fazer uma nova página com a mesma slug e hierarquia.
Solutions Collecting From Web of "Arquivo de tema para todas as páginas que são filho de uma página específica"
Gerenciando Conteúdo Personalizado
Tem vários customizadores de tema para diferentes páginas possíveis?
Pegue o primeiro parágrafo de cada publicação
Por que os temas dependem de "The Loop"?
Eu tenho uma pequena function condicional customizada que faria o trabalho para você.
function is_child_page($page = NULL){ global $post; if ($page == NULL){ $p = get_post($post->ID); if ($p->post_parent > 0 ){ return true; }else{ return false; } } $args = array( 'child_of' => (int)$page); $pages = get_pages($args); foreach ($pages as $p){ if ($p->ID == $post->ID){ return true; break; } } return false; }
if (is_child_page()){ //this page has a parent page } if (is_child_page(23)){ //this page is a child page of the page with the ID of 23 }
Agora você pergunta como isso pode ajudá-lo?
Depois de ter esta function guardada no arquivo functions.php do seu tema, page.php arquivo page.php do seu tema e adicione no máximo algo como isto:
if (is_child_page(12)){ include (TEMPLATEPATH . '/page-about-us-all.php'); exit(); }
E você terminou! Nota: este código está assumindo que o seu id sobre a página é: 12 e seu arquivo de tema é nomeado: page-about-us-all.php .
Isso pode ser muito mais simples e não dependerá de funções separadas.
Supondo que desejemos verificar se a página atual é filho da página 134 , deixando cair o seguinte na parte superior da sua page.php seria suficiente:
< ?php if (134 == $post->post_parent) { include (TEMPLATEPATH . '/page-mysubpagetemplate.php'); // Name this for your child page template name exit(); } else { // Do something else // You might want to stick your regular page.php code in here, or alternatively, you could call another template }; ?>
Isso não é possível, por padrão, no sistema de modelos WordPress. A hierarquia do modelo não detecta o relacionamento da página pai-filho. No entanto, eu encontrei esta publicação no blog , explicando um método para automatizar o processo. Não tentei implementá-lo, então não comprovo a sua eficácia, mas vale pelo menos uma leitura.
(Nota: esta input do blog gera sua function em 'save_post', o que significa que a troca do Modelo de Página acontece somente quando a postagem é salva. Isso geralmente deve funcionar, uma vez que a alteração da Página Principal requer uma ação de salvar. No entanto, você pode precisar de um diferente gancho, se você precisar atualizar retroactivamente o modelo da página.)