国产精在线-国产精欧美一区二区三区-国产精视频-国产精品 日韩-一级黄色片在线看-一级黄色片在线播放

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來保存這個數據。

 

THE END
主站蜘蛛池模板: 激情视频一区 | 男人桶女人暴爽的视频 | 国产午夜亚洲精品一区网站 | 亚洲综合一区二区不卡 | 中文字幕成人免费高清在线视频 | 国产午夜亚洲精品第一区 | 日本欧美国产精品 | 99久久精品一区二区三区 | 国产tv在线观看 | 2022日韩理论片在线观看 | 日韩看片 | 美女视频黄的免费看网站 | 日韩精品首页 | 精品亚洲欧美高清不卡高清 | 亚洲成a人在线播放www | 美女视频黄a视频免费全过程 | 国产成人精品久久综合 | 精品久久久久中文字幕日本 | 精品国语_高清国语自产 | 精品国产一区二区三区在线 | 成人免费影院 | 日本精品一区二区三区在线视频 | 国产精品黄网站免费进入 | 日本人视频网站一 | caoporen国产91在线| 台湾黄三级高清在线观看播放 | 91精品国产免费久久久久久青草 | 久久网站在线观看 | 久久国产成人午夜aⅴ影院 久久国产成人亚洲精品影院老金 | 国产欧美日韩视频在线观看一区二区 | 在线看片日本 | 国产精品成人久久久久久久 | 免费人成黄页在线观看视频国产 | 国产精品久久久久久久y | 欧美成a| 国产精品白浆流出视频 | 欧美一级久久久久久久大 | 国产欧美一区二区三区免费 | 九九免费精品视频在这里 | 毛片日韩| 成人男男黄网色视频免费 |