欧美激情中文字幕在线_国产区精品视频_免费久久99精品国产自_日韩精品 欧美

WordPress添加自定義文章欄目

WordPress允許自定義添加文章自定義欄目,如下圖,可以在文章編輯的時候,添加一個欄目隨著文章發布和更新一起提交。

1.注冊函數

首先添加動作,第一個參數為指定WordPress動作類型,第二個參數為指定函數

add_action('add_meta_boxes', 'fun_plug_add_meta_box');

指定函數

function fun_plug_add_meta_box() { 
add_meta_box('down_link', '下載地址', 'meta_box_down_link_form', 'post', 'advanced', 'high');
 }

add_meta_box函數功能如下

$id HTML 代碼中設置區域中id屬性的值,也是WordPress文章自定義欄目的一個唯一標識符

$title 區域中的標題名稱,支持HTML代碼
$callback 添加的設置區域的顯示函數,界面在這個函數里面實現
$post_type 在 post 還是 page 的編輯頁面中顯示
$context 設置區域的顯示位置,主編輯區(advanced)、邊欄(side)
$priority 設置區域顯示的優先級,high(高),low(低),default(默認)
$callback_args 回調函數接受的附加參數,一般省略

回調函數如下:

function meta_box_down_link_form($post)
{
    // 創建臨時隱藏表單,為了安全
    wp_nonce_field('meta_box_down_link_form', 'meta_box_down_link_form_nonce');
    // 獲取之前存儲的值
    $value = get_post_meta($post->ID, 'down_link', true);
    ?>
     <input type="text" value="<?php echo $value?>">
    <?php
}

至此,后臺文章已經正常顯示內容了。

相關解釋

【1】wp_nonce_field函數,本函數為WordPress防止攻擊的一個函數,原理是生成一個隨意的字符,在保存函數中,驗證這個字符是否和提交的字符一致,如果不一致,就說明可能這個內容來自第三方偽造內容提交,而不是在文章頁面直接提交。

當然,如果不寫這個函數,也是可以的,在保存的函數中,也不用驗證就是了。

函數第一個參數為唯一標識符,第二個為表單名稱,在后面保存文章字段的時候,可以通過$_POST['名稱']來獲取這個值。

【2】get_post_meta函數,WordPress中,通過get_post_meta獲取保存的文章額外字段,通過update_post_meta保存額外字段。

2.保存文章數據

上面注冊函數后,也能提交內容了,但是還沒有保存內容,所以無法顯示東西。需要接管WordPress文章保存函數。

注冊保存文章動作,第二個參數為自定義函數,WordPress會傳入一個文章ID參數

add_action('save_post', 'fun_save_post_down_link');

自定義函數,本函數處理文章額外字段的保存

function fun_save_post_down_link($post_id)
{
    // 安全檢查
    // 檢查是否發送了一次性隱藏表單內容
    if (!isset($_POST['meta_box_down_link_form_nonce'])) {
        return;
    }
    // 判斷隱藏表單的值與之前是否相同
    if (!wp_verify_nonce($_POST['meta_box_down_link_form_nonce'], 'meta_box_down_link_form')) {
        return;
    }
    // 判斷該用戶是否有權限
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    // 判斷 Meta Box 是否為空
    if (!isset($_POST['down_link1'])) {
        return;
    }
    update_post_meta($post_id, 'down_link', $_POST['down_link1']);
}

其中,安全檢查中,需要上面的wp_nonce_field支持,如果沒有創建這個隨機值,就不需要判斷。

首先判斷是否有這個值,如果沒有,說明提交可能是偽造的。接著判斷值是否一致,通過函數wp_verify_nonce來判斷,第一個為要對比的值,通過$_POST獲取提交過來的值,第二參數為唯一標識符,和wp_nonce_field函數的第一個參數一致。

接著判斷用戶是否有權限保存文章,current_user_can函數來判斷。

最后判斷是否有提交自定義的值,不為空的話,就使用函數update_post_meta來保存這個數據。

 

上一篇 使用WordPress自帶字體圖標
下一篇 layui 獲取select值和文本
目錄
applek

applek管理員

個人說明在個人中心里面設置

本月創作熱力圖

最新評論
小超
小超
7月9日
下個版本考慮將下載地址加密(防止采集)
Lvtu
Lvtu
7月4日
qiang厲害
評論于留言建議
chinacnd
chinacnd
6月26日
這個主題是怎么做到加載速度那么快的?
風起云涌
風起云涌
6月17日
前臺投稿現在有點太抽象了 希望可以弄成那種分區填寫的 標題,內容,圖片,目錄,標簽,這樣的
評論于留言建議
主站蜘蛛池模板: 国产色综合天天综合网| 亚洲精品一区二区毛豆| 久久久精品美女| 日韩av不卡播放| 久久久av电影| 国产一区二区视频免费在线观看 | 亚洲国产一区二区在线| 国产精品日韩在线| 日韩在线国产| 久久福利视频网| 伊人久久大香线蕉午夜av| 欧美日产一区二区三区在线观看| 国产日韩在线看| 99九九视频| 欧美精品性视频| 91精品国产网站| 欧美精品亚洲| 色婷婷综合久久久久| y111111国产精品久久婷婷| 日韩福利在线| 亚洲中文字幕无码专区| 国产美女精品在线观看| 欧美日韩亚洲一 | 久久精品国产69国产精品亚洲| 99精品欧美一区二区三区| 久久国产色av免费观看| 人人妻人人澡人人爽欧美一区| 99在线影院| 久久99九九| 欧美在线一级va免费观看| 99国产精品白浆在线观看免费| 国产美女久久精品香蕉69| 日本欧美一二三区V| 国产精品日本精品| 欧美精品第三页| 欧美精品七区| 久久精品视频中文字幕| 麻豆一区二区三区在线观看| 欧美在线不卡区| 欧美日韩视频在线一区二区观看视频| 国产自产在线视频一区|