Tôi có thể chỉ định một tệp mẫu cho một loại bài tùy chỉnh không?
Tôi đã tạo một loại bài đăng tùy chỉnh được gọi items
và tôi muốn gán mẫu cho các mục như bạn có thể làm với các trang.
Tôi có thể chỉ định một tệp mẫu cho một loại bài tùy chỉnh không?
Tôi đã tạo một loại bài đăng tùy chỉnh được gọi items
và tôi muốn gán mẫu cho các mục như bạn có thể làm với các trang.
Câu trả lời:
Từ phiên bản WordPress 4.7, giờ đây bạn có thể gán các mẫu trang tùy chỉnh cho các loại bài đăng khác cùng với trang.
Để đạt được điều này ngoài tiêu đề tệp Tên mẫu, các loại bài đăng được hỗ trợ bởi một mẫu có thể được chỉ định bằng Loại bài đăng mẫu: như sau.
<?php
/*
Template Name: Full-width page layout
Template Post Type: post, page, product
*/
Bạn có thể nhận thêm thông tin về nó trên các trang sau.
https://wptavern.com/wordpress-4-7-brings-custom-page-template-feftality-to-all-post-types https://make.wordpress.org/core/2016/11/03/post -type-samples-in-4-7 /
Bạn có thể tạo mẫu cho các loại bài đăng tùy chỉnh bằng cách tạo tệp, ví dụ như:
single-mycustomposttype.php
Xem Phân cấp mẫu trong bộ mã.
PS : điều này đã được trả lời.
Đây là những gì làm việc cho tôi:
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;
});
Do đó, đưa ra một bài đăng của loại bài tùy chỉnh foobar
và một hello-world
đoạn mã ở trên sẽ tải single-foobar-hello-world.php
mẫu, nếu nó tồn tại.
Đối với những người tiếp cận chủ đề này thông qua Google, WP 4.7 đã giới thiệu các mẫu cho tất cả các loại bài đăng. Xem Make WP Core để biết hướng dẫn đầy đủ. Bạn không còn bị giới hạn trong một mẫu cho tất cả CPT của mình, bạn có thể chỉ định từng mẫu riêng lẻ theo bài đăng giống như bạn có thể làm với Trang.
Điều này hơi cũ nhưng bạn cũng có thể thử điều này:
Tạo một mẫu cho loại bài tùy chỉnh:
single-*custom-post-type-slug*.php
Tệp phải kiểm tra sên và xác minh xem có tồn tại tệp không, nếu không, hãy chuyển sang tệp mẫu mặc định:
<?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 );
?>
Thay thế tất cả các trường hợp tùy chỉnh-bài-type-sên với sên thực tế của bài tùy chỉnh kiểu của bạn.
Tôi làm điều này để dễ sử dụng và mục đích tổ chức. Nó có vẻ sạch sẽ hơn đối với tôi khi có tất cả các tệp trong thư mục gốc của chủ đề.
cấu trúc thư mục ví dụ:
themeroot
| |single-cases.php
|-templates
| --cases
| |default.php
| |case-one.php
| |case-two.php
Đầu tiên tạo trên trang có tên là Mục theo mong muốn của bạn sẽ hiển thị nội dung từ các loại bài đăng của mục, hơn là tạo một tệp mẫu như bên dưới và đặt tên cho các mục mẫu đó. Chọn mẫu đó cho trang bạn đã tạo.
<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>
Điều này rất đơn giản để làm.
Tạo một tệp PHP mới trong thư mục gốc của chủ đề của bạn và thêm tệp này vào đầu:
<?php /*
* Template Name: My custom view
* Template Post Type: Post_typename // here you need to add the name of your custom post type
*/ ?>
Ví dụ đầy đủ sẽ như sau:
<?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();?>
Chúng tôi đã tìm ra giải pháp khác bằng cách sử dụng plugin bài đăng mẫu tùy chỉnh