wordpress 為自定義類型文章新增自定義字段

wordpress強大之處在于有很強的可自定義性,使得插件、主題的開發(fā)變得及其便利。愛掏網(wǎng) - it200.com就拿我們今天要說的自定義文章添加自定義字段來說,就很便捷。愛掏網(wǎng) - it200.com

比如我們要錄入一個客戶信息到wordpress中,那么需要的字段可不僅僅是什么標(biāo)題、內(nèi)容、摘要這么簡單了,我們可能需要錄入客戶的性別、姓名、電話、郵件等等。愛掏網(wǎng) - it200.com又比如產(chǎn)品,需要額外的產(chǎn)品價格、產(chǎn)品大小等屬性,那么就需要給文章類型添加Meta Box,通俗點理解就是自定義字段表單,下面我們以添加產(chǎn)品價格為例進(jìn)行說明。愛掏網(wǎng) - it200.com

自定義Meta Box需要用到add_meta_box函數(shù),其新增的信息會保存到數(shù)據(jù)庫wp_postmeta表。愛掏網(wǎng) - it200.com

add_meta_box函數(shù)說明:

add_meta_box( $id, $title, $callback, $post_type, $context,$priority, $callback_args );

$id:字段id,唯一

$title:標(biāo)題名稱

$callback:回調(diào)函數(shù)

$post_type:文章類型

$context:顯示位置

$priority:優(yōu)先級

接下來開始從0寫一個字段吧

1、注冊一個 Meta Box 示例:

add_action( add_meta_boxes, product_director );//創(chuàng)建字段,注冊作用

function product_director() {//創(chuàng)建字段時調(diào)用的函數(shù)

add_meta_box(

product_director,//字段的唯一ID吧

產(chǎn)品價格,//字段的名稱,在表單上方顯示

product_director_meta_box,//回調(diào)函數(shù)

product,//所添加的文章類型

side,

low

);

}

2、創(chuàng)建回調(diào)函數(shù)product_director_meta_box

配置參數(shù)里面指定了回調(diào)函數(shù)product_director_meta_box,需要在這個函數(shù)里面創(chuàng)建表單:

function product_director_meta_box($post) {

// 創(chuàng)建臨時隱藏表單,為了安全

wp_nonce_field( product_director_meta_box, product_director_meta_box_nonce );

// 獲取之前存儲的值

$value = get_post_meta( $post->ID, _product_director, true );

?>

placeholder=輸入產(chǎn)品價格>

}

3、提示:添加上面代碼后,新建文章時,在右則就可以看到一個產(chǎn)品價格的輸入框。愛掏網(wǎng) - it200.com 這時候表單還不能用,因為提交文章之后并沒有保存這個 Meta Box 的內(nèi)容,下面是驗證保存內(nèi)容的代碼:

add_action( save_post, product_director_save_meta_box );//在保存文章時,執(zhí)行回調(diào)函數(shù)

function product_director_save_meta_box($post_id){//回調(diào)函數(shù),顯示表單,用于新建和編輯顯示表單

// 安全檢查

// 檢查是否發(fā)送了一次性隱藏表單內(nèi)容(判斷是否為第三者模擬提交)

if ( ! isset( $_POST[product_director_meta_box_nonce] ) ) {//安全判斷

return;

}

// 判斷隱藏表單的值與之前是否相同

if ( ! wp_verify_nonce( $_POST[product_director_meta_box_nonce], product_director_meta_box ) ) {//主要是修改時,判斷product_director_meta_box函數(shù)提交過來的是不是和之前的一樣,一樣就不再次提交了

return;

}

// 判斷該用戶是否有權(quán)限

if ( ! current_user_can( edit_post, $post_id ) ) {//判斷有沒有權(quán)限進(jìn)行新建、編輯。愛掏網(wǎng) - it200.com愛掏網(wǎng) - it200.com愛掏網(wǎng) - it200.com愛掏網(wǎng) - it200.com

return;

}

// 判斷 Meta Box 是否為空

if ( ! isset( $_POST[product_director] ) ) {//提交的字段為空字段

return;

}

$product_director = sanitize_text_field( $_POST[product_director] );//過濾凈化表單數(shù)據(jù)

update_post_meta( $post_id, _product_director, $product_director );//這句就是sql語句吧,_product_director為保存在數(shù)據(jù)庫的meta_key字段

把上面的代碼按順序添加到主題的functions.php文件,至此,Meta Box注冊完成,就可以開始添加參數(shù)了。愛掏網(wǎng) - it200.com

4、如何調(diào)用?

if(get_post_meta($post->ID,_product_director,true)){

echo get_post_meta($post->ID,_product_director,true);

}

?>

5、把Meta Box添加把后臺所有產(chǎn)品列表字段中顯示,通過manage_$post_type_posts_custom_column實現(xiàn)。愛掏網(wǎng) - it200.com

add_action(manage_posts_custom_column, product_custom_columns);

add_filter(manage_edit-product_columns, product_edit_columns);

function product_custom_columns($column){

global $post;

switch ($column) {

case product_director:

echo get_post_meta( $post->ID, _product_director, true );

break;

}

}

function product_edit_columns($columns){

$columns[product_director] = 產(chǎn)品價格;

return $columns;

}

上面的全部代碼:

add_action( add_meta_boxes, product_director );

function product_director() {

add_meta_box(

product_director,

產(chǎn)品價格,

product_director_meta_box,

product,

side,

low

);

}

function product_director_meta_box($post) {

// 創(chuàng)建臨時隱藏表單,為了安全

wp_nonce_field( product_director_meta_box, product_director_meta_box_nonce );

// 獲取之前存儲的值

$value = get_post_meta( $post->ID, _product_director, true );

?>

placeholder=輸入產(chǎn)品價格>

}

add_action( save_post, product_director_save_meta_box );

function product_director_save_meta_box($post_id){

if ( ! isset( $_POST[product_director_meta_box_nonce] ) ) {

return;

}

if ( ! wp_verify_nonce( $_POST[product_director_meta_box_nonce], product_director_meta_box ) ) {

return;

}

if ( ! current_user_can( edit_post, $post_id ) ) {

return;

}

if ( ! isset( $_POST[product_director] ) ) {

return;

}

$product_director = sanitize_text_field( $_POST[product_director] );

update_post_meta( $post_id, _product_director, $product_director );

}

add_action(manage_posts_custom_column, product_custom_columns);

add_filter(manage_edit-product_columns, product_edit_columns);

function product_custom_columns($column){

global $post;

switch ($column) {

case product_director:

echo get_post_meta( $post->ID, _product_director, true );

break;

}

}

function product_edit_columns($columns){

$columns[product_director] = 產(chǎn)品價格;

return $columns;

}

別人寫的例子:

頁面添加自定義字段的

/**

* Custom Post metadata functions

*

* @package Bravada

*/

// Add Layout Meta Box

function bravada_add_meta_boxes( $post ) {

global $wp_meta_boxes;

$layout_context = apply_filters( bravada_layout_meta_box_context, side ); // normal, side, advanced

$layout_priority = apply_filters( bravada_layout_meta_box_priority, default ); // high, core, low, default

// Add page layouts

add_meta_box(

bravada_layout,

__( Static Page Layout, bravada ),

bravada_layout_meta_box,

page,

$layout_context,

$layout_priority

);

} // bravada_add_meta_boxes()

// Hook meta boxes into add_meta_boxes

add_action( add_meta_boxes, bravada_add_meta_boxes );

// Define Layout Meta Box

function bravada_layout_meta_box() {

global $post;

global $bravada_big;

$options = $bravada_big[options][0];

$custom = ( get_post_custom( $post->ID ) ? get_post_custom( $post->ID ) : false );

$layout = ( isset( $custom[_cryout_layout][0] ) ? $custom[_cryout_layout][0] : 0 );

?>

$data ) {

$data[url] = sprintf( $data[url], get_template_directory_uri() ); ?>

value= />

/>

value=0 />

/admin/images/0def.png />

} //bravada_layout_meta_box()

function bravada_meta_style( $hook ) {

if ( post.php != $hook && post-new.php != $hook && page.php != $hook ) {

return;

}

wp_enqueue_style( bravada_meta_style, get_template_directory_uri() . /admin/css/meta.css, NULL, _CRYOUT_THEME_VERSION );

}

add_action( admin_enqueue_scripts, bravada_meta_style );

/**

* Validate, sanitize, and save post metadata.

*

*/

function bravada_save_custom_post_metadata() {

// Dont break on quick edit

global $post;

if ( ! isset( $post ) || ! is_object( $post ) ) {

return;

}

global $bravada_big;

$valid_layouts = $bravada_big[options][0][choices];

$layout = ( isset( $_POST[_cryout_layout] ) && array_key_exists( sanitize_text_field( $_POST[_cryout_layout] ), $valid_layouts ) ? sanitize_text_field( $_POST[_cryout_layout] ) : 0 );

// Layout - Update

update_post_meta( $post->ID, _cryout_layout, $layout );

} //bravada_save_custom_post_metadata()

// Hook the save post custom meta data into

add_action( publish_page, bravada_save_custom_post_metadata );

add_action( draft_page, bravada_save_custom_post_metadata );

add_action( future_page, bravada_save_custom_post_metadata );

// FIN

聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
發(fā)表評論
更多 網(wǎng)友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 美女黄频免费网站| 一区二区日韩精品中文字幕| 韩国三级最新理论电影| 日本a级作爱片金瓶双艳| 喝丰满女医生奶水电影| 一二三四社区在线中文视频| 爱爱视频天天干| 国产精品毛片大码女人| 久久综合丝袜日本网| 美女被无套进入| 大象传媒在线观看| 亚洲av之男人的天堂网站| 蜜臀色欲AV在线播放国产日韩| 岛国a香蕉片不卡在线观看| 亚洲精品视频专区| 午夜激情小视频| 手机在线观看精品国产片| 人人爽人人爽人人片a免费| 手机1024看片| 日本19禁综艺直接啪啪| 免费人成在线观看网站| 337p日本欧洲亚洲大胆裸体艺术| 日韩在线一区二区三区免费视频| 双女车车好快的车车有点污| 99久久无色码中文字幕人妻| 最近最新2019中文字幕高清| 四虎国产精品永免费| 999国产精品| 日本特交大片免费观看| 免费欧洲毛片**老妇女| 两个人看的视频播放www| 手机看片福利久久| 亚洲欧美日韩一区在线观看 | 国产福利免费视频| 中文字幕免费播放| 欧美极品另类高清videos| 国产人妖xxxx做受视频| 99精品热这里只有精品| 日韩中文字幕在线观看| 伊人色综合久久天天| 黑人一级大毛片|