WordPress get_post_type() is Null

主題或插件中有時我們會用同一支程式重複使用,比如說主題的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 ... 

}

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料