템플릿 파일을 맞춤 게시물 유형에 할당 할 수 있습니까?
이라는 사용자 정의 게시물 유형을 만들었 items
으며 페이지에서 할 수있는 것처럼 항목에 템플릿을 지정하고 싶습니다.
템플릿 파일을 맞춤 게시물 유형에 할당 할 수 있습니까?
이라는 사용자 정의 게시물 유형을 만들었 items
으며 페이지에서 할 수있는 것처럼 항목에 템플릿을 지정하고 싶습니다.
답변:
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 --4-7 /에서 유형-템플릿
다음과 같이 파일을 작성하여 사용자 정의 게시물 유형에 대한 템플리트를 작성할 수 있습니다.
single-mycustomposttype.php
코덱의 템플릿 계층 을 참조하십시오 .
추신 : 이것은 이미 답변되었습니다.
나를 위해 일하는 것은 다음과 같습니다.
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
경우 템플릿 이로드 된 경우 템플릿을 로드합니다 .
Google을 통해이 스레드에 도달 한 사용자를 위해 WP 4.7은 모든 게시물 유형에 대한 템플릿을 도입했습니다. 전체 연습은 WP 코어 만들기를 참조하십시오 . 더 이상 모든 CPT에 대해 하나의 템플릿으로 제한되지 않으며 페이지에서와 같이 게시물별로 개별 템플릿 게시물을 할당 할 수 있습니다.
이것은 조금 낡았지만 시도해 볼 수도 있습니다.
맞춤 게시물 유형에 대한 템플릿을 만듭니다.
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 의 모든 인스턴스를 사용자 정의 post type의 실제 슬러그로 교체하십시오 .
사용하기 쉽고 조직적인 목적으로이 작업을 수행합니다. 테마의 루트 폴더에 모든 파일을 갖는 것보다 나에게 더 깨끗해 보입니다.
폴더 구조 예 :
themeroot
| |single-cases.php
|-templates
| --cases
| |default.php
| |case-one.php
| |case-two.php
먼저 항목 게시 유형의 컨텐츠를 표시하는 항목으로 항목으로 이름이 지정된 페이지를 작성하고 아래에서 하나의 템플리트 파일을 작성하고 해당 템플리트 항목으로 이름을 지정하십시오. 작성한 페이지의 해당 템플리트를 선택하십시오.
<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>
이것은 매우 간단합니다.
테마 루트 디렉토리에 새 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();?>
맞춤 게시물 템플릿 플러그인을 사용하여 다른 솔루션을 개발했습니다.