我是否可以将模板分配给自定义帖子类型?

时间:2011-07-21 作者:Odyss3us

我可以为自定义帖子类型分配模板文件吗?

我创建了一个名为items, 我想为您可以处理页面的项目分配模板。

8 个回复
SO网友:Vinod Dalvi

从…起WordPress version 4.7 现在,您可以将自定义页面模板与页面一起分配给其他帖子类型。

为了实现这一点,除了模板名称文件头之外,还可以使用模板post Type指定模板支持的post类型:如下所示。

<?php
/*
Template Name: Full-width page layout
Template Post Type: post, page, product
*/
您可以在以下页面上获得更多信息。

https://wptavern.com/wordpress-4-7-brings-custom-page-template-functionality-to-all-post-typeshttps://make.wordpress.org/core/2016/11/03/post-type-templates-in-4-7/

SO网友:mike23

您可以通过创建文件为自定义帖子类型创建模板,例如:

single-mycustomposttype.php
请参见Template Hierarchy 在法典中。

PS : 这有already 已回答。

SO网友:Chris Carson

以下是对我有效的方法:

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;
});
因此给出了一个自定义职位类型的职位foobar 还有一点hello-world 上述代码将加载single-foobar-hello-world.php 模板(如果存在)。

SO网友:WebElaine

对于那些通过Google访问此线程的用户,WP 4.7为所有帖子类型引入了模板。看见Make WP Core 进行全面演练。对于所有CPT,您不再局限于一个模板,您可以像处理页面一样逐帖分配单个模板。

SO网友:eballeste

这有点旧,但您也可以尝试:

为自定义帖子类型创建模板:

single-*custom-post-type-slug*.php
该文件应检查slug并验证文件是否存在,如果不存在,则回退到默认模板文件:

<?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  );
?>
用自定义帖子类型的实际slug替换自定义帖子类型slug的所有实例。

我这样做是为了便于使用和组织。对我来说,这似乎比将所有文件都放在主题的根文件夹中更干净。

文件夹结构示例:

themeroot
| |single-cases.php
|-templates
| --cases
|   |default.php
|   |case-one.php
|   |case-two.php

SO网友:jerryurenaa

这很简单。

在主题根目录中创建一个新的PHP文件,并将其添加到顶部:

<?php /*
 * Template Name: My custom view
 * Template Post Type: Post_typename   // here you need to add the name of your custom post type
 */ ?>
完整示例如下:

<?php /*
 * Template Name: My custom view
 * Template Post Type: Post_typename   // here you need to add the name of your custom post type
 */ ?>
<?php get_header();?>


<div class="container pt-5 pb-5">


    <?php if (has_post_thumbnail()):?>

      <img src="<?php the_post_thumbnail_url(\'largest\');?>" class="img-fluid">

    <?php endif;?>




    <?php if (have_posts()) : while (have_posts()) : the_post();?>

        <?php the_content();?>

    <?php endwhile; endif;?>


</div>

<?php get_footer();?>

SO网友:clap

首先根据您的意愿在名为Items的页面上创建显示Items帖子类型内容的页面,然后创建一个模板文件,如下所示,并将该模板命名为Items。为您创建的页面选择该模板。

<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>

SO网友:Leon Rainbow
结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。