《PHP編程:WordPress中編寫自定義存儲字段的相關PHP函數解析》要點:
本文介紹了PHP編程:WordPress中編寫自定義存儲字段的相關PHP函數解析,希望對您有用。如果有疑問,可以聯系我們。
PHP教程WordPress 的自定義字段就是文章的 meta 信息(元信息),利用這個功能,可以擴展文章的功能,是學習 WordPress 插件開發和主題深度開發的必備知識,便利給文章儲存一些額外的自定義內容.
PHP教程自界說字段不光給插件開發者使用,WordPress 的特色圖像、自界說頁面模板等功能的信息都儲存在自界說字段的表單里邊.
PHP教程在文章編輯器界面的 “自定義欄目” 板塊可以管理除了名字開頭是 “_” 的字段(沒有 “自定義欄目” 板塊請在右上角的 “顯示選項” 開啟),所以很多 WordPress 本身使用的自定義字段無法在此管理.
存儲原理
PHP教程自定義字段非常靈活,首先來說一下它的儲存原理和為什么這么靈活.數據庫中,儲存文章的 wp_posts 表單,只有默認的 20 個項目,用于儲存必需的文章信息.
PHP教程
PHP教程而存儲自定義字段的 wp_postmeta 表,卻只有四個項目,分別是 meta_id(自定義字段的 ID)、post_id(自定義字段屬于的文章的 ID)、meta_key(自定義字段的名字)和 meta_value(自定義字段的值),一般我們只必要注意 meta_key 和 meta_value 兩個項目即可.
PHP教程正是因為這樣,每篇文章都可以有相同名字但不同值的自定義字段,并且可以有無限個自定義字段,任何的插件和主題都可以利用自定義字段對文章信息進行擴展.
PHP教程一篇文章的自界說字段的名字是可以重復的.
PHP教程添加字段
PHP教程自定義字段可以在文章編纂頁面操作,但本文主要寫關于開發的事情.
PHP教程
PHP教程添加自界說字段,可以使用 add_post_meta() 函數:
PHP教程
add_post_meta( $post_id, $meta_key, $meta_value, $unique );
PHP教程參數:
PHP教程$post_id
PHP教程(整數)(必需)添加自定義字段的文章的 ID.
PHP教程默認值:None
PHP教程$meta_key
PHP教程(字符串)(必需)自定義字段的名稱.
PHP教程默認值:None
PHP教程$meta_value
PHP教程(混合)(必需)自定義字段的值.
PHP教程默認值:None
PHP教程$unique
PHP教程(布爾)(可選)如果已經有相同名字的字段,是否重復添加.True 允許;False 不允許.
PHP教程默認值:False
PHP教程更新字段
PHP教程要更新一個字段的值,可以使用 update_post_meta() 函數:
PHP教程
update_post_meta( $post_id, $meta_key, $meta_value, $prev_value );
PHP教程參數:
PHP教程$post_id
PHP教程(整數)(必需)更新自定義字段的文章的 ID.
PHP教程默認值:None
PHP教程$meta_key
PHP教程(字符串)(必需)更新的自定義字段的名稱.
PHP教程默認值:None
PHP教程$meta_value
PHP教程(混合)(必需)更新的自定義字段的值.
PHP教程默認值:None
PHP教程$prev_value
PHP教程(混合)(可選)此參數只有在一篇文章有多個相同名稱的自定義字段時才有用.如果留空,則更新所有同名的字段,不然則更新和此參數值相同的值的字段.
PHP教程默認值:空字符串
PHP教程獲取字段
PHP教程獲取字段可以使用 get_post_meta() 函數:
PHP教程
get_post_meta( $post_id, $key, $single );
PHP教程參數:
PHP教程$post_id
PHP教程(整數)(必需)要獲取字段的文章 ID,如果在循環中,可以使用 get_the_ID() 來設置.
PHP教程默認值:None
PHP教程$key
PHP教程(字符串)(可選)要獲取的字段的名稱.
PHP教程默認值:None
PHP教程$single
PHP教程(布爾)(可選)如果為 True 則返回一個字符串;如果為 False 則返回數組,且相同鍵值的自定義字段的值會依照添加順序組合成一個序列數組.
PHP教程默認值:False
PHP教程例子
PHP教程下邊是一個瀏覽統計的簡單例子:
PHP教程
function Bing_statistics_visitors( $cache = false ){
if( !is_singular() ) return;
global $post;
$id = $post->ID;
if( get_post( $id )->post_status != 'publish' ) return;
$post_views = (int) get_post_meta( $id, 'views', true );
update_post_meta( $id, 'views', ( $post_views + 1 ) ) || add_post_meta( $id, 'views', 1, true );
}
add_action( 'wp_head', 'Bing_statistics_visitors' );
PHP教程
function Bing_get_views(){
global $post;
$views = number_format( (int) get_post_meta( $post->ID, 'views', true ) );
return $views;
}
PHP教程不可見的自定義字段
雖然在數據庫里存在很多 WordPress 本身創建的自定義字段,但是在文章編輯器的 “自定義欄目” 里卻并沒有顯示(沒有 “自定義欄目” 板塊請在右上角的 “顯示選項” 開啟),比如特色圖像、自定義頁面模板和評論是否開啟等等.
PHP教程如果仔細觀察,會發現這些自定義字段的名字都是以下劃線 “_” 開頭的,所以說,以下劃線 “_” 開頭的自定義字段并不會顯示給用戶,the_meta() 函數也不會輸出,對用戶來說是暗藏的.
PHP教程
PHP教程利用這個特性,我們可以把不想讓用戶隨便修改的字段、會讓用戶感到困惑的字段,好比已經提供設置界面的設置選項、緩存數據等等,以免出現錯誤.
PHP教程下邊是一個小例子:
PHP教程
add_post_meta( get_the_ID(), '_time_diff', time() );
PHP教程另外,如果自界說字段儲存的內容是數組即使名字前邊不是下劃線 “_” 也不會顯示.
《PHP編程:WordPress中編寫自定義存儲字段的相關PHP函數解析》是否對您有啟發,歡迎查看更多與《PHP編程:WordPress中編寫自定義存儲字段的相關PHP函數解析》相關教程,學精學透。維易PHP學院為您提供精彩教程。