テンプレートをカスタム投稿タイプに割り当てることはできますか?
-
-
http://www.wpbeginner.com/wp-themes/create-custom-single-post-templates-for-specific-posts-or-sections-in-wordpress/(これは投稿用ですが、CPT用に変更できます)http://www.nathanrice.net/blog/wordpress-single-post-templates/(これは投稿用ですが、CPT用に変更できます)実際にはプラグインを使用することをお勧めします.http://www.wpbeginner.com/wp-themes/create-custom-single-post-templates-for-specific-posts-or-sections-in-wordpress/ ( this is for posts but you can modify it for CPT's) http://www.nathanrice.net/blog/wordpress-single-post-templates/ ( this is for posts but you can modify it for CPT's) It's a good idea for a plugin actually.
- 0
- 2011-07-22
- Wyck
-
8 回答
- 投票
-
- 2017-04-23
WordPressバージョン4.7 から、カスタムページテンプレートを他の投稿タイプに割り当てることができるようになりましたページと一緒に.
テンプレート名ファイルヘッダーに加えてこれを実現するために、テンプレートでサポートされる投稿タイプは、テンプレート投稿タイプを使用して次のように指定できます.
<?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-types https://make.wordpress.org/core/2016/11/03/post-type-templates-in-4-7/
From WordPress version 4.7 you can now assign custom page templates to other post types along with page.
To achieve this in addition to the Template Name file header, the post types supported by a template can be specified using Template Post Type: as following.
<?php /* Template Name: Full-width page layout Template Post Type: post, page, product */
You can get more information about it on the following pages.
https://wptavern.com/wordpress-4-7-brings-custom-page-template-functionality-to-all-post-types https://make.wordpress.org/core/2016/11/03/post-type-templates-in-4-7/
-
- 2011-07-21
たとえば、次のようなファイルを作成することで、カスタム投稿タイプのテンプレートを作成できます:
single-mycustomposttype.php
コーデックスの
テンプレート階層を参照してください. PS :これには
すでに回答済み. You can create template for custom post types by creating files, like for example :
single-mycustomposttype.php
See Template Hierarchy in the codex.
PS : this has already been answered.
-
それをありがとう、しかし私が知りたいのはカスタム投稿タイプにカスタムテンプレートを追加することが可能かどうかです.たとえば、2つのテンプレートを作成して、各テンプレートをそれぞれの投稿に割り当てることはできますか?私が理解している限り、その特定の投稿タイプを処理するために1つのテンプレートファイルを指定することしかできません.Thanks for that, but what I would like to know is if it is possible to add custom templates to custom post types. So for instance can I create two templates and assign each template to it's respective post? That only allows for specifying one template file to handle that specific post type as far as I understand it.
- 2
- 2011-07-21
- Odyss3us
-
単一の投稿に異なるテンプレートが必要な場合は、必要なテンプレートごとに、いくつかのカスタム投稿タイプを作成することをお勧めします.それはあなたが必要とする異なるテンプレートの数に依存すると思います.投稿ごとに異なる必要があるテンプレートで何をしますか?Is see, if you need different templates for single posts, you may want to create several custom post types, according to each needed template. I guess that depends on how many different templates you need. what are you going to do in the templates that needs to be different on each post ?
- 0
- 2011-07-22
- mike23
-
この回答は現在古くなっています.VinodDalviの答えを参照してください.This answer is now out of date. See Vinod Dalvi's answer.
- 0
- 2017-09-12
- Simon East
-
それは時代遅れではありません.それでも問題なく動作し、標準的な方法です.It is not out of date. Still works just fine and is still standard practice.
- 1
- 2020-03-01
- Tim Hallman
-
- 2015-06-11
これが私に役立つものです:
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
テンプレート(存在する場合).Here's what works for me:
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; });
Thus given a post of custom post type
foobar
and a slug ofhello-world
the above code would load thesingle-foobar-hello-world.php
template, if it existed. -
- 2017-03-08
Googleを通じてこのスレッドに到達する人のために、WP4.7はすべての投稿タイプのテンプレートを導入しました. WPコアの作成完全なウォークスルー.すべてのCPTに対して1つのテンプレートに制限されることはなくなり、Pagesの場合と同じように、個々のテンプレートを投稿ごとに割り当てることができます.
For those reaching this thread through Google, WP 4.7 introduced templates for all post types. See Make WP Core for a full walkthrough. You're no longer restricted to one template for all of your CPT, you can assign individual templates post by post just like you can do with Pages.
-
- 2016-07-13
これは少し古いですが、これを試すこともできます:
カスタム投稿タイプのテンプレートを作成します:
single-*custom-post-type-slug*.php
ファイルはスラッグをチェックし、ファイルが存在するかどうかを確認する必要があります.存在しない場合は、デフォルトのテンプレートファイルにフォールバックします.
<?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 ); ?>
custom-post-type-slug のすべてのインスタンスを、カスタム投稿タイプの実際のスラッグに置き換えます.
これは、使いやすさと整理の目的で行います.テーマのルートフォルダーにすべてのファイルを配置するよりも、私にはわかりやすいように思えます.
フォルダ構造の例:
themeroot | |single-cases.php |-templates | --cases | |default.php | |case-one.php | |case-two.php
This is a little old but you can also try this:
Create a template for the custom post type:
single-*custom-post-type-slug*.php
The file should check the slug and verify if a file exists, if not, fallback to a default template file:
<?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 ); ?>
Replace all instances of custom-post-type-slug with the actual slug of your custom post type.
I do this for ease of use and organizational purposes. It seems cleaner to me than having all of the files in the theme's root folder.
example folder structure:
themeroot | |single-cases.php |-templates | --cases | |default.php | |case-one.php | |case-two.php
-
- 2015-07-13
最初に、アイテムの投稿タイプのコンテンツを表示するアイテムという名前のページを作成します.次に、以下のように1つのテンプレートファイルを作成し、そのtemplate-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>
First create on page named as Items as your wish which display the content from items post types, than create one template file as below and named that template-items. Select that template for the page you have created.
<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>
-
- 2019-06-07
これは非常に簡単です.
テーマのルートディレクトリに新しい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();?>
This is very simple to do.
Create a new PHP file in your theme root directory and add this to the top:
<?php /* * Template Name: My custom view * Template Post Type: Post_typename // here you need to add the name of your custom post type */ ?>
Full example will be as following:
<?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();?>
-
テンプレートファイルをカスタム投稿タイプに割り当てることはできますか?
items
というカスタム投稿タイプを作成しました.ページと同じように、アイテムにテンプレートを割り当てたいと思います.