Saya ingin memindahkan file templat halaman seperti page-{slug}.php
ke sub-direktori dalam tema saya, dengan cara yang akan dikenali oleh WordPress secara otomatis. Jika Templat halaman dari formulir tersebut tidak ada dalam sub-direktori, maka WordPress harus kembali ke aturan memuat template default. Bagaimana saya bisa mencapainya?
Catatan-1: Pertanyaan ini dan jawaban yang sesuai lebih umum untuk templat halaman dan tautan ini menyebutkan template-parts/page
, yang bukan hal yang sama.
Catatan-2: Saya memiliki beberapa page-{slug}.php
file templat halaman seperti, jadi saya ingin memindahkannya ke sub-direktori untuk organisasi file yang lebih rapi.
theme-development
themes
page-template
directory
perwujudan
sumber
sumber
Jawaban:
Bagaimana Templat Halaman dimuat:
Menurut Hierarki Templat WordPress default ,
page
permintaan memuat templat berdasarkan prioritas dan penamaan seperti yang dinyatakan di bawah ini:Custom Page Template
: jika didefinisikan dalam editor halaman.page-{slug}.php
page-{url-encoded-slug}.php
: hanya untuk karakter multi-byte.page-{id}.php
page.php
singular.php
index.php
Di antaranya,
singular.php
danindex.php
yang tidak benar-benar halaman template.singular.php
adalah template fallback untuk semua jenis posting tunggal danindex.php
merupakan template fallback utama untuk apa pun yang seharusnya dimuat oleh template WordPress. Jadi lima yang pertama adalah templat halaman.Cara menyuntikkan file template dari sub-direktori dalam hierarki:
Fungsi inti WordPress
get_page_template()
menghasilkanpage
larik hierarki templat yang diperlukan dan tepat sebelum memutuskan dengan tepat file templat mana yang akan dimuat dari hierarki, WordPress mengaktifkanpage_template_hierarchy
kait filter. Jadi cara terbaik untuk menambahkan sub-direktori, di mana WordPress akan mencaripage-{slug}.php
templat secara otomatis, adalah dengan menggunakan filter ini dan menyuntikkan nama file yang tepat relatif terhadap sub-direktori dalam array hierarki templat halaman.Sekarang, untuk tujuan kami, kami akan menyuntikkan
sub-directory/page-{slug}.php
nama file tepat sebelumpage-{slug}.php
dalam array hierarki template yang diteruskan ke fungsi panggilan balik kait. Dengan begitu, WordPress akan memuatsub-directory/page-{slug}.php
file jika ada, jika tidak maka akan mengikuti hierarki pemuatan templat laman normal. Tentu saja, untuk menjaga konsistensi, kami akan tetap memberikanCustom Page Template
prioritas yang lebih tinggi dibandingkan dengansub-directory/page-{slug}.php
file kami . Jadi hierarki templat halaman yang diubah akan menjadi:Custom Page Template
: jika didefinisikan dalam editor halaman.sub-directory/page-{slug}.php
sub-directory/page-{url-encoded-slug}.php
: hanya untuk karakter multi-byte.page-{slug}.php
page-{url-encoded-slug}.php
: hanya untuk karakter multi-byte.page-{id}.php
page.php
Contoh
functions.php
KODE:Jika Anda berencana untuk melakukan perubahan ini hanya pada satu tema, maka Anda dapat menggunakan KODE berikut dalam
functions.php
file tema aktif Anda :Plugin Contoh:
Jika Anda ingin mengikuti organisasi file templat yang sama dalam beberapa tema, maka sebaiknya memisahkan fitur ini dari tema Anda. Dalam hal ini, alih-alih memodifikasi file tema
functions.php
dengan KODE sampel di atas, Anda harus membuat plugin sederhana dengan KODE sampel yang sama.Simpan KODE berikut dengan nama file misalnya
page-slug-template-subdir.php
dalamplugins
direktori WordPress Anda :Pemakaian:
sumber