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

        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號
        主站蜘蛛池模板: 亚洲一区二区精品视频| 久久99精品久久久久子伦| 久久久无码精品亚洲日韩按摩 | 久久福利青草精品资源站| 亚洲精品国产精品乱码视色| 国产精品亚洲产品一区二区三区| 亚洲无线观看国产精品| 久久婷婷国产综合精品| 久夜色精品国产一区二区三区| 青青草精品视频| 2022免费国产精品福利在线| 精品亚洲一区二区| 久久se精品一区精品二区国产| 久久国产成人精品麻豆| 国产成人精品无码一区二区| 国产精品三级在线| 99精品国产福利在线观看| 久久久久久无码国产精品中文字幕 | 精品一区二区三区免费观看 | 久久精品?ⅴ无码中文字幕| 成人午夜精品亚洲日韩| 欧美极品欧美精品欧美视频| 国产日韩精品在线| 91国内外精品自在线播放| 精品少妇无码AV无码专区| 精品亚洲成a人片在线观看少妇 | 四虎影视永久在线精品免费| 久久久精品日本一区二区三区| 惠民福利中文字幕人妻无码乱精品| 亚洲日韩精品A∨片无码| 久久久精品波多野结衣| 久草欧美精品在线观看| 国产中文在线亚洲精品官网| 国产精品亚洲视频| 国产精品成人69XXX免费视频| 国产精品视频不卡| 国产亚洲精品无码专区| 欧美精品一区二区在线精品| 欲帝精品福利视频导航| 日产欧美国产日韩精品| 久久99国产精品尤物|