Melihat melalui dokumentasi Wordpress , dikatakan is_page_template()
membandingkan dengan "nama templat", jika ada.
Saya memiliki templat tersimpan di yang page-homepage.php
disebut Homepage
:
/*
* Template Name: Homepage
* Description: The template for displaying the homepage
*/
Dan saya memiliki beberapa kode yang ingin saya jalankan di functions.php saya ketika saya menggunakan template itu:
if (is_page_template('Homepage')) {
...
Tapi itu tidak dipicu ketika saya berada di halaman yang menggunakan template itu.
Ketika saya melihat kode yang dieksekusi Wordpress is_page_template()
, sepertinya itu benar-benar memeriksa nama dokumen, bukan nama templat ...?
function is_page_template( $template = '' ) {
$page_template = get_page_template_slug( get_queried_object_id() );
if ( $template == $page_template )
return true;
Dalam contoh saya tampaknya $page_template
adalah page-homepage.php
- bukan nama template, seperti dokumentasi menyarankan ...?
Apakah saya melakukan sesuatu yang salah?
page-template
codex
Django Reinhardt
sumber
sumber
Jawaban:
Kondisi Anda harus ditulis seperti ini:
Saya percaya kebingungan adalah hasil dari dua hal:
is_page_template()
menunjukkanget_page_template_slug()
fungsi pada intinya. Fungsi ini sebenarnya mengembalikan nama file, bukan template slug. https://codex.wordpress.org/Function_Reference/get_page_template_slugSaat menentukan argumen untuk
is_page_template()
fungsi (seperti pada contoh di atas), path file relatif terhadap root tema.Fungsi ini tidak akan berfungsi di dalam loop.
sumber
get_page_template_slug()
sebenarnya tidak mengembalikan siput!Saya pikir hal terbaik untuk dikatakan adalah, ia memeriksa nama FILE dan dalam kasus Anda itu akan menjadi page-homepage.php. begitu:
Hal-hal lain yang perlu dipikirkan adalah jika file template sebenarnya disimpan dalam folder lain di dalam tema. Baca lebih banyak
Satu hal lagi,
Template Name: Homepage
biasanya apa yang digunakan untuk mengidentifikasi template ketika membuat halaman atau posting.sumber
page-templates/page-homepage.php
berbeda dari templat di root tema.