Saya ingin menawarkan jenis posting khusus saya sebagai Plugin, sehingga orang dapat menggunakannya tanpa menyentuh folder tema mereka. Tetapi templat jenis kiriman khusus - seperti single-movies.php - berada di folder tema. Apakah ada cara untuk mendapatkan WP untuk memeriksa single-movies.php di folder plugin? Menghubungkan fungsi ke Hierarki Filer ? Atau get_template_directory (); ?
plugins
custom-post-types
themes
directory
nathanbweb
sumber
sumber
get_query_template()
fungsi. Ini adalah pengait variabel, jadi bagian pertama{$type}_template
berubah tergantung pada parameter apa yang diteruskan ke fungsi itu. Lihat wp-include / template.php untuk beberapa yang umumadd_filter( 'single-movies_template', 'my_custom_template' );
seperti dalam tutorial tertaut. (Pertanyaan ini tertutup untuk jawaban baru, jadi saya tidak bisa menambahkannya sendiri.)PLUGIN_PATH
denganplugin_dir_path( __FILE__ )
dan kemudian menghapus garis miring pertama dari nama file Anda. Path lengkap akan terlihat seperti ini:return plugin_dir_path( __FILE__ ) . 'Custom_File.php';
Jawaban yang diperbarui
Versi lebih bersih dan lebih pendek.
Jawaban lama
Menambahkan tanda centang untuk templat khusus jenis kiriman khusus di folder tema ke jawaban @Brainternet.
Sekarang Anda dapat membiarkan pengguna plugin menyalin template dari plugin Anda ke tema mereka untuk menimpanya.
Dengan contoh ini, templat harus berada di direktori root dari plugin dan tema.
sumber
locate_template
daripadaget_stylesheet_directory
terdengar seperti opsi pembersih bagi saya (ditemukan di sini: code.tutsplus.com/tutorials/… ).Saya ingin menunjukkan bahwa ketika Anda menggunakan metode filter untuk ini, sangat penting untuk memprioritaskan filter seperti:
Jika Anda tidak melakukan ini, terkadang WP akan mencoba untuk memeriksa kembali setelah filter ini. Sedang mencabut rambut saya karena ini selama 2 jam.
sumber
Ada banyak cara yang lebih baik untuk melakukannya yang saya gunakan untuk plugin saya.
Gunakan
template_include
kait filter untuk memuat kode di atas.sumber
berkat halaman ini saya bisa menyelesaikan pertanyaan yang sama untuk saya.
Untuk referensi, inilah yang akhirnya saya dapatkan:
kait filter {$ type} _template tidak berfungsi untuk saya
sumber
Di atas adalah jawaban yang bagus, tetapi memeriksa $ var tunggal memungkinkan template untuk menimpa template jika disediakan oleh tema / tema anak.
sumber