Beberapa jawaban pengantar yang sangat bagus di sini.
Pada dasarnya, get_template_part()
memungkinkan pengembang tema untuk mengatur urutan spesifisitas file template. Pikirkan itu mirip dengan spesifisitas karena berlaku untuk penyeleksi CSS. Saat mendesain sesuatu, Anda ingin memulainya dengan minimal spesifik, sehingga dapat dengan mudah diganti dalam bagian-bagian desain yang perlu perhatian individu.
Jadi misalnya, Anda mendesain blog dan membuat file loop.php yang berfungsi baik untuk menandai posting. Tetapi Anda berencana ke depan, dan Anda menyebutnya dalam file template Anda nanti dengan penentu konteks tambahan - katakanlah, pada halaman indeks, Anda memanggil get_template_part( 'loop', 'index' );
, pada template tunggal, Anda memanggil get_template_part( 'loop', 'single' );
, pada halaman arsip, Anda menelepon get_template_part( 'loop', 'archive' );
, dan sebagainya. Ini membuatnya sangat mudah ketika Anda memutuskan untuk menandai loop pada halaman arsip Anda berbeda dari halaman rumah: cukup buat template loop-archive.php dan itu akan digunakan daripada generik loop.php .
Tetapi keajaiban di belakang get_template_part()
adalah dalam fungsi locate_template()
, yang memeriksa dulu direktori tema, lalu direktori induk (jika ada) untuk file bernama. Ini sangat berguna untuk pengembangan plugin. Di salah satu plugin saya, saya mendefinisikan jenis posting kustom dan membuat file template lingkaran untuk jenis posting kustom di direktori plugin saya. Tapi ... Saya ingin mengizinkan tema menggunakan plugin saya untuk mengganti markup saya jika mereka memilih. Di sinilah locate_template()
keajaiban bekerja.
locate_template($template_names, $load = false, $require_once = true )
akan mencari masing-masing nama dalam array $ template_names di direktori stylesheet, kemudian di direktori template. Melewati 'true' sebagai argumen $ load berarti ia akan membutuhkan file pertama yang ditemukan, dan akan mengembalikan string kosong jika tidak ada file template yang ditemukan. Jadi saya bisa melakukan sesuatu seperti ini di plugin saya:
if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) )
include( 'loop-mycustomposttype.php' );
... yang semestinya membuatnya mudah bagi pengembang tema untuk menyesuaikan plugin saya hanya dengan memasukkan file yang disebut loop-mycustomposttype.php dalam tema mereka.