Posso atribuir um modelo a um tipo de postagem personalizado?

30

Posso atribuir um arquivo de modelo a um tipo de postagem personalizado?

Eu criei um tipo de postagem personalizado chamado items e gostaria de atribuir modelos aos itens como você pode fazer com páginas.

    
por Odyss3us 21.07.2011 / 17:38
fonte

7 respostas

43

De versão do WordPress 4.7 , agora você pode atribuir modelos de página personalizados a outros tipos de postagem junto com a página.

Para isso, além do cabeçalho do arquivo Nome do modelo, os tipos de post suportados por um modelo podem ser especificados usando o tipo de postagem do modelo: da seguinte forma.

<?php
/*
Template Name: Full-width page layout
Template Post Type: post, page, product
*/

Você pode obter mais informações sobre isso nas próximas páginas.

enlace enlace

    
por Vinod Dalvi 23.04.2017 / 12:06
fonte
19

Você pode criar um modelo para tipos de postagem personalizados criando arquivos, como, por exemplo:

single-mycustomposttype.php

Veja Hierarquia de modelos no códice.

PS : isso tem foi respondida.

    
por mike23 21.07.2011 / 17:44
fonte
6

Veja o que funciona para mim:

add_filter('single_template', function($original){
  global $post;
  $post_name = $post->post_name;
  $post_type = $post->post_type;
  $base_name = 'single-' . $post_type . '-' . $post_name . '.php';
  $template = locate_template($base_name);
  if ($template && ! empty($template)) return $template;
  return $original;
});

Assim, uma postagem de tipo de postagem personalizada foobar e um slug de hello-world do código acima carregaria o modelo single-foobar-hello-world.php , se ele existisse.

    
por Chris Carson 11.06.2015 / 21:12
fonte
4

Para aqueles que alcançam esse segmento por meio do Google, o WP 4.7 introduziu modelos para todos os tipos de postagem. Consulte Faça o WP Core para um passo a passo completo. Você não está mais restrito a um modelo para todo o seu CPT. Você pode atribuir modelos individuais por postagem, assim como faz com o Pages.

    
por WebElaine 08.03.2017 / 16:42
fonte
1

Isso é um pouco antigo, mas você também pode tentar:

Crie um modelo para o tipo de postagem personalizado:

single-*custom-post-type-slug*.php

O arquivo deve verificar o slug e verificar se existe um arquivo, se não, fazer fallback para um arquivo de modelo padrão:

<?php 
    $slug = get_post_field( 'post_name', get_post() );
    $slug = ( locate_template( 'templates/*custom-post-type-slug*/' . $slug . '.php' ) ) ? $slug : 'default';

    get_template_part( 'templates/*custom-post-type-slug*/' . $slug  );
?>

Substitua todas as ocorrências de custom-post-type-slug pelo espaçamento real do seu tipo de postagem personalizado.

Eu faço isso para facilidade de uso e propósitos organizacionais. Parece-me mais limpo do que ter todos os arquivos na pasta raiz do tema.

estrutura de pastas de exemplo:

themeroot
| |single-cases.php
|-templates
| --cases
|   |default.php
|   |case-one.php
|   |case-two.php
    
por eballeste 13.07.2016 / 23:59
fonte
0

Primeiro, crie na página nomeada como Itens como seu desejo, que exiba o conteúdo dos tipos de postagem de itens, em vez de criar um arquivo de modelo como abaixo e nomeie esses itens-modelo. Selecione esse modelo para a página que você criou.

<div class="container">

    <div class="row">

        <div class="col-md-9">
            <div class="panel panel-default text-center">
                <?php $loop = new WP_Query( array( 'post_type' => 'items', 'posts_per_page' => 5 ) ); ?>                        

                        <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
                            <?php the_title();?>
                            <?php if(has_post_thumbnail() ) { the_post_thumbnail(); } ?>
                            <?php the_content();?>
                        <?php endwhile; ?>

                <?php wp_reset_query(); ?>                      
            </div>
        </div>

    </div>

</div>
    
por clap 13.07.2015 / 10:06
fonte
-3

Nós criamos outra solução usando o plug-in de modelo de postagem personalizado

    
por Leon Rainbow 01.04.2016 / 15:59
fonte