Bisakah saya menetapkan file template ke jenis posting khusus?
Saya telah membuat jenis posting khusus yang disebut items
, dan saya ingin menetapkan template untuk item seperti yang dapat Anda lakukan dengan halaman.
Bisakah saya menetapkan file template ke jenis posting khusus?
Saya telah membuat jenis posting khusus yang disebut items
, dan saya ingin menetapkan template untuk item seperti yang dapat Anda lakukan dengan halaman.
Jawaban:
Dari WordPress versi 4.7 Anda sekarang dapat menetapkan template halaman khusus untuk jenis posting lain bersama dengan halaman.
Untuk mencapai ini selain header file Templat Name, tipe posting yang didukung oleh templat dapat ditentukan menggunakan Tipe Post Templat: sebagai berikut.
<?php
/*
Template Name: Full-width page layout
Template Post Type: post, page, product
*/
Anda dapat memperoleh informasi lebih lanjut tentang hal itu di halaman-halaman berikut.
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 /
Anda dapat membuat template untuk jenis posting khusus dengan membuat file, seperti misalnya:
single-mycustomposttype.php
Lihat Templat Hierarki dalam kodeks.
PS : ini sudah dijawab.
Inilah yang bekerja untuk saya:
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;
});
Dengan demikian diberi posting jenis posting khusus foobar
dan siput dari hello-world
kode di atas akan memuat single-foobar-hello-world.php
template, jika ada.
Bagi mereka yang mencapai utas ini melalui Google, WP 4.7 memperkenalkan templat untuk semua jenis posting. Lihat Membuat WP Core untuk penelusuran lengkap. Anda tidak lagi terbatas pada satu templat untuk semua CPT Anda, Anda dapat menetapkan templat individual setiap posting seperti yang dapat Anda lakukan dengan Halaman.
Ini agak lama tetapi Anda juga dapat mencoba ini:
Buat template untuk jenis posting khusus:
single-*custom-post-type-slug*.php
File harus memeriksa siput dan memverifikasi apakah ada file, jika tidak, mundur ke file templat default:
<?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 );
?>
Ganti semua instance siput tipe-pos-kustom dengan siput aktual tipe posting khusus Anda.
Saya melakukan ini untuk kemudahan penggunaan dan tujuan organisasi. Tampaknya lebih bersih bagi saya daripada memiliki semua file di folder root tema.
contoh struktur folder:
themeroot
| |single-cases.php
|-templates
| --cases
| |default.php
| |case-one.php
| |case-two.php
Pertama buat pada halaman bernama Item sebagai keinginan Anda yang menampilkan konten dari item jenis posting, daripada membuat satu file template seperti di bawah ini dan beri nama item template itu. Pilih templat itu untuk halaman yang telah Anda buat.
<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>
Ini sangat mudah dilakukan.
Buat file PHP baru di direktori root tema Anda dan tambahkan ini ke atas:
<?php /*
* Template Name: My custom view
* Template Post Type: Post_typename // here you need to add the name of your custom post type
*/ ?>
Contoh lengkapnya adalah sebagai berikut:
<?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();?>
Kami mencari solusi lain menggunakan plugin templat posting kustom