WordPress中編寫自訂儲存欄位的相關PHP函數解析,_PHP教程

來源:互聯網
上載者:User

WordPress中編寫自訂儲存欄位的相關PHP函數解析,


WordPress 的自訂欄位就是文章的 meta 資訊(元資訊),利用這個功能,可以擴充文章的功能,是學習 WordPress 外掛程式開發和主題深度開發的必備知識,方便給文章儲存一些額外的自訂內容。

自訂欄位不光給外掛程式開發人員使用,WordPress 的特色映像、自訂頁面模板等功能的資訊都儲存在自訂欄位的表單裡邊。

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

自訂欄位非常靈活,首先來說一下它的儲存原理和為什麼這麼靈活。資料庫中,儲存文章的 wp_posts 表單,只有預設的 20 個項目,用於儲存必須的文章資訊。

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

正是因為這樣,每篇文章都可以有相同名字但不同值的自訂欄位,而且可以有無限個自訂欄位,任何的外掛程式和主題都可以利用自訂欄位對文章資訊進行擴充。

一篇文章的自訂欄位的名字是可以重複的。

添加欄位

自訂欄位可以在文章編輯頁面操作,但本文主要寫關於開發的事情。

添加自訂欄位,可以使用 add_post_meta() 函數:

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

參數:

$post_id

(整數)(必須)添加自訂欄位的文章的 ID.

預設值:None

$meta_key

(字串)(必須)自訂欄位的名稱。

預設值:None

$meta_value

(混合)(必須)自訂欄位的值。

預設值:None

$unique

(布爾)(可選)如果已經有相同名字的欄位,是否重複添加。True 允許;False 不允許。

預設值:False

更新欄位

要更新一個欄位的值,可以使用 update_post_meta() 函數:

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

參數:

$post_id

(整數)(必須)更新自訂欄位的文章的 ID.

預設值:None

$meta_key

(字串)(必須)更新的自訂欄位的名稱。

預設值:None

$meta_value

(混合)(必須)更新的自訂欄位的值。

預設值:None

$prev_value

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

預設值:Null 字元串

擷取欄位

擷取欄位可以使用 get_post_meta() 函數:

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

參數:

$post_id

(整數)(必須)要擷取欄位的文章 ID,如果在迴圈中,可以使用 get_the_ID() 來設定。

預設值:None

$key

(字串)(可選)要擷取的欄位的名稱。

預設值:None

$single

(布爾)(可選)如果為 True 則返回一個字串;如果為 False 則返回數組,且相同索引值的自訂欄位的值會按照添加順序組合成一個序列數組。

預設值:False

例子

下邊是一個瀏覽統計的簡單例子:

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' );
擷取計數:
function Bing_get_views(){  global $post;  $views = number_format( (int) get_post_meta( $post->ID, 'views', true ) );  return $views;}

不可見的自訂欄位
雖然在資料庫裡存在很多 WordPress 自己建立的自訂欄位,但是在文章編輯器的 “自訂欄目” 裡卻並沒有顯示(沒有 “自訂欄目” 板塊請在右上方的 “顯示選項” 開啟),比如特色映像、自訂頁面模板和評論是否開啟等等。

如果仔細觀察,會發現這些自訂欄位的名字都是以底線 “_” 開頭的,所以說,以底線 “_” 開頭的自訂欄位並不會顯示給使用者,the_meta() 函數也不會輸出,對使用者來說是隱藏的。

利用這個特性,我們可以把不想讓使用者隨便修改的欄位、會讓使用者感到困惑的欄位,比如已經提供設定介面的設定選項、快取資料等等,以免出現錯誤。

下邊是一個小例子:

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

另外,如果自訂欄位儲存的內容是數組即使名字前邊不是底線 “_” 也不會顯示。

您可能感興趣的文章:

  • WordPress判斷使用者是否登入的代碼
  • 詳解WordPress中提醒安裝外掛程式以及隱藏外掛程式的功能實現
  • 給WordPress的編輯後台添加提示框的代碼執行個體分享
  • 詳解WordPress開發中過濾屬性以及Sql語句的函數使用
  • WordPress中建立使用者角色的相關PHP函數使用詳解

http://www.bkjia.com/PHPjc/1084529.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1084529.htmlTechArticleWordPress中編寫自訂儲存欄位的相關PHP函數解析, WordPress 的自訂欄位就是文章的 meta 資訊(元資訊),利用這個功能,可以擴充文章的...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.