站長資訊網
        最全最豐富的資訊網站

        WordPress如何添加Meta Box

        下面由WordPress教程欄目給大家介紹WordPress添加Meta Box的方法,希望對需要的朋友有所幫助!

          WordPress添加Meta Box的方法,需要使用到add meta boxes Action,該Action允許我們為任何文章類型注冊Meta Box,在該Action中,我們需要使用add_meta_box()方法來添加Meta Box的相關信息。

        代碼如下

        function add_rating_meta_box($post_type, $post) {        // 需要哪些post type添加推薦指數 Meta Box        $types = array( 'post', 'page' );         foreach ( $types as $type ) {            add_meta_box(                'rating_meta_box_id', // Meta Box在前臺頁面中的id,可通過JS獲取到該Meta Box                '推薦指數', // 顯示的標題                'render_rating_meta_box', // 回調方法,用于輸出Meta Box的HTML代碼                $type, // 在哪個post type頁面添加                'side', // 在哪顯示該Meta Box                'default' // 優先級            );        }    }    add_action( 'add_meta_boxes', 'add_rating_meta_box' );

          這里我們在$types數組中定義了Post和Page都需要推薦指數這個自定義字段,然后告訴WordPress使用“render_rating_meta_box”方法來渲染Meta Box,位置在側邊欄(side)。因為內容不多,所以側邊欄足夠,若內容較多,可以將“side”改為“advanced”,這樣就會在主內容區域渲染Meta Box。

          接下來看看是如何渲染的

        function render_rating_meta_box( $post ) {        // 添加 nonce 項用于后續的安全檢查        wp_nonce_field( 'rating_nonce_action', 'rating_nonce_name' );         // 獲取推薦指數的值        $rating_key = 'rating';        $rating_value = get_post_meta( $post->ID, $rating_key, true );        $rating_value = (int)$rating_value;         $html = '<select name="rating_field">';        for ($i = 0; $i <= 10; $i++) {            $selected = '';            if ($i == $rating_value) {                $selected = 'selected="selected"';            }            $html .= sprintf('<option value="%s" %s>%s星</option>', $i, $selected, $i/2);        }        $html .= '</select>';        echo $html;    }

          這里先使用wp_nonce_field()添加了一個nonce field,用來做安全檢查,然后,讀取推薦指數的值,循環1~10來輸出可供選擇的值,如果和推薦指數相同,則默認選上。通過下拉框,既可以解決輸入不方便和無法驗證的問題。記住這里下拉框的name屬性的值(rating_field),將通過它在下面的代碼中獲取選擇的值。

          最后,當文章被保存時,需要將推薦指數也保存起來

        function save_rating_post_data( $post_id ) {        // 檢查nonce是否設置        if (!isset($_POST['rating_nonce_name'])) {            return $post_id;        }        $nonce = $_POST['rating_nonce_name'];         // 驗證nonce是否正確        if (!wp_verify_nonce( $nonce, 'rating_nonce_action')) {            return $post_id;        }         // 如果是系統自動保存,則不操作        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {            return $post_id;        }         // 檢查用戶權限        if ($_POST['post_type'] == 'post') {            if (!current_user_can('edit_post', $post_id )) {                return $post_id;            }        }         $rating_key = 'rating';        // 獲取數據        $rating_value = $_POST['rating_field'];         // 更新數據        update_post_meta( $post_id, $rating_key, $rating_value );    }    add_action( 'save_post', 'save_rating_post_data' );

          這里做了一系列檢查,包括對剛剛設置的nonce檢查,用戶權限的檢查,排除自動保存的情況。然后使用update_post_meta()方法將數據存入數據庫。

          至此,我們就完成了對推薦指數自定義字段的改裝,可以很方便的選擇文章的推薦指數。

          等等。。。

          細心的朋友可能發現了,在應用了上面三段代碼后,的確可以實現功能。但是,在默認的自定義欄目區域下,是可以看到,有一個名為“rating”的欄目,這就是我們剛剛選擇的推薦指數。如果想讓他不在自定義欄目下,顯示,可以將上述代碼中的$rating_key改為以下劃線開頭,這樣,WordPress就不會顯示出來了。注意有兩個地方要改。

        // 原來的代碼   $rating_key = 'rating';    // 改后的代碼   $rating_key = '_rating';

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 夜夜爽一区二区三区精品| 人人妻人人澡人人爽人人精品电影| 亚洲精品视频在线观看你懂的| 2020国产精品永久在线| 日韩精品中文字幕第2页| 中文字幕亚洲精品资源网| 久久精品国产99久久久| 久久久无码精品午夜| 亚洲国产精品久久久久婷婷老年| 久久久久久夜精品精品免费啦| 牛牛在线精品观看免费正| 99久久综合国产精品二区| 国产韩国精品一区二区三区久久| 亚洲线精品一区二区三区影音先锋| 精品国产成人在线| 99久久国产综合精品网成人影院 | 国产精品666| 久久棈精品久久久久久噜噜| 日韩精品成人亚洲专区| 国产中文在线亚洲精品官网| 亚洲综合精品香蕉久久网97| 91精品国产9l久久久久| 久久99精品久久久久久久不卡 | 99精品免费视品| 精品一区二区三区自拍图片区| 亚洲国产精品高清久久久| 亚洲欧美日韩国产一区二区三区精品| 久久精品国产色蜜蜜麻豆| 精品久久综合1区2区3区激情| 国产精品内射婷婷一级二| 国产精品九九久久免费视频 | 久久国产美女免费观看精品| 国产精品午夜免费观看网站| 国产精品高清在线| 99九九精品免费视频观看| 99久久精品无码一区二区毛片 | 一色屋精品视频在线观看| 在线观看亚洲精品福利片 | 亚洲国产精品一区二区第一页 | 国产精品美女久久久久| 99久久国产热无码精品免费|