主題或插件中有時我們會用同一支程式重複使用,比如說主題的Banner,通常不會每一個頁面寫一次,而是每個頁面都會 include banner.php 檔案,這樣的好處是維護比較方便讓程式的再利用,但在banner.php中,不可能所有頁面banner全都一樣,所以在banner.php需要設定一些判斷條件,依據不同條件做不同的事。
範例:
<?php $post_type = get_post_type( get_the_ID() ); if ( in_array( $post_type , array('page','post','custom_post_type_name')) ) { // ... do sometinng ... }else{ // ... do sometinng ... }
問題
在主題 Custom Post Type 頁面中 Call get_post_type() 回傳值卻是NULL,讓我無法判斷這頁的post type name,照上述程式,無法以 Post Type Name 做為判斷條件,舉例:假設 post type 為 event 則會顯示某一張banner圖片,但抓不到正確的 post type name 回傳NULL,則會去執行else這段程式,導致主題 banner版面錯置。
目前不知道這原因為何。
解決
在主題中改用 is_post_type_archive() 來判斷post type name
範例:
<?php if ( is_post_type_archive(array('page','post','custom_post_type_name') ) ) { // ... do sometinng ... }else{ // ... do sometinng ... }