溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

WordPress中如何編寫自定義存儲字段

發(fā)布時間:2021-09-03 09:38:31 來源:億速云 閱讀:138 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)WordPress中如何編寫自定義存儲字段的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

WordPress 的自定義字段就是文章的 meta 信息(元信息),利用這個功能,可以擴展文章的功能,是學(xué)習(xí) WordPress 插件開發(fā)和主題深度開發(fā)的必備知識,方便給文章儲存一些額外的自定義內(nèi)容。

自定義字段不光給插件開發(fā)者使用,WordPress 的特色圖像、自定義頁面模板等功能的信息都儲存在自定義字段的表單里邊。

在文章編輯器界面的 “自定義欄目” 板塊可以管理除了名字開頭是 “_” 的字段(沒有 “自定義欄目” 板塊請在右上角的 “顯示選項” 開啟),所以很多 WordPress 自己使用的自定義字段無法在此管理。
存儲原理

自定義字段非常靈活,首先來說一下它的儲存原理和為什么這么靈活。數(shù)據(jù)庫中,儲存文章的 wp_posts 表單,只有默認(rèn)的 20 個項目,用于儲存必須的文章信息。

WordPress中如何編寫自定義存儲字段

而存儲自定義字段的 wp_postmeta 表,卻只有四個項目,分別是 meta_id(自定義字段的 ID)、post_id(自定義字段屬于的文章的 ID)、meta_key(自定義字段的名字)和 meta_value(自定義字段的值),一般我們只需要注意 meta_key 和 meta_value 兩個項目即可。

正是因為這樣,每篇文章都可以有相同名字但不同值的自定義字段,而且可以有無限個自定義字段,任何的插件和主題都可以利用自定義字段對文章信息進行擴展。

一篇文章的自定義字段的名字是可以重復(fù)的。

添加字段

自定義字段可以在文章編輯頁面操作,但本文主要寫關(guān)于開發(fā)的事情。

WordPress中如何編寫自定義存儲字段

添加自定義字段,可以使用 add_post_meta() 函數(shù):

add_post_meta( $post_id, $meta_key, $meta_value, $unique );

參數(shù):

$post_id

(整數(shù))(必須)添加自定義字段的文章的 ID.

默認(rèn)值:None

$meta_key

(字符串)(必須)自定義字段的名稱。

默認(rèn)值:None

$meta_value

(混合)(必須)自定義字段的值。

默認(rèn)值:None

$unique

(布爾)(可選)如果已經(jīng)有相同名字的字段,是否重復(fù)添加。True 允許;False 不允許。

默認(rèn)值:False

更新字段

要更新一個字段的值,可以使用 update_post_meta() 函數(shù):

update_post_meta( $post_id, $meta_key, $meta_value, $prev_value );

參數(shù):

$post_id

(整數(shù))(必須)更新自定義字段的文章的 ID.

默認(rèn)值:None

$meta_key

(字符串)(必須)更新的自定義字段的名稱。

默認(rèn)值:None

$meta_value

(混合)(必須)更新的自定義字段的值。

默認(rèn)值:None

$prev_value

(混合)(可選)此參數(shù)只有在一篇文章有多個相同名稱的自定義字段時才有用。如果留空,則更新所有同名的字段,否則則更新和此參數(shù)值相同的值的字段。

默認(rèn)值:空字符串

獲取字段

獲取字段可以使用 get_post_meta() 函數(shù):

get_post_meta( $post_id, $key, $single );

參數(shù):

$post_id

(整數(shù))(必須)要獲取字段的文章 ID,如果在循環(huán)中,可以使用 get_the_ID() 來設(shè)置。

默認(rèn)值:None

$key

(字符串)(可選)要獲取的字段的名稱。

默認(rèn)值:None

$single

(布爾)(可選)如果為 True 則返回一個字符串;如果為 False 則返回數(shù)組,且相同鍵值的自定義字段的值會按照添加順序組合成一個序列數(shù)組。

默認(rèn)值:False

例子

下邊是一個瀏覽統(tǒng)計的簡單例子:

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' );

獲取計數(shù):

function Bing_get_views(){
  global $post;
  $views = number_format( (int) get_post_meta( $post->ID, 'views', true ) );
  return $views;
}

不可見的自定義字段
雖然在數(shù)據(jù)庫里存在很多 WordPress 自己創(chuàng)建的自定義字段,但是在文章編輯器的 “自定義欄目” 里卻并沒有顯示(沒有 “自定義欄目” 板塊請在右上角的 “顯示選項” 開啟),比如特色圖像、自定義頁面模板和評論是否開啟等等。

如果仔細(xì)觀察,會發(fā)現(xiàn)這些自定義字段的名字都是以下劃線 “_” 開頭的,所以說,以下劃線 “_” 開頭的自定義字段并不會顯示給用戶,the_meta() 函數(shù)也不會輸出,對用戶來說是隱藏的。

WordPress中如何編寫自定義存儲字段

利用這個特性,我們可以把不想讓用戶隨便修改的字段、會讓用戶感到困惑的字段,比如已經(jīng)提供設(shè)置界面的設(shè)置選項、緩存數(shù)據(jù)等等,以免出現(xiàn)錯誤。

下邊是一個小例子:

add_post_meta( get_the_ID(), '_time_diff', time() );

另外,如果自定義字段儲存的內(nèi)容是數(shù)組即使名字前邊不是下劃線 “_” 也不會顯示。

感謝各位的閱讀!關(guān)于“WordPress中如何編寫自定義存儲字段”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI