2013-07-19 45 views
5

我試圖從元框中將某些數據保存在WordPress數據庫中。從選定的下拉列表中保存元框數據

我有一個下拉列表來選擇一些選項,我想保存選定的選項數據庫感謝元框。

但是我有一些困難,在PHP中的保存功能:

<?php 

function add_admin_menu_class_meta_box() { 
    $pages = array('post', 'portfolio'); 
    foreach($pages as $page) { 
     add_meta_box('custom_element_grid_class','Element grid size', 'custom_element_grid_class_meta_box', $page, 'side', 'high'); 
    } 
} 
add_action('admin_menu', 'add_admin_menu_class_meta_box'); 

function custom_element_grid_class_meta_box(){ 

    ?> 

    <label>Choose the size of the element : </label> 

    <select name="custom_element_grid_class" id="custom_element_grid_class"> 
     <option value="normal" <?php selected($meta_element_class, 'normal'); ?>>normal</option> 
     <option value="square" <?php selected($meta_element_class, 'square'); ?>>square</option> 
     <option value="wide" <?php selected($meta_element_class, 'wide'); ?>>wide</option> 
     <option value="tall" <?php selected($meta_element_class, 'tall'); ?>>tall</option> 
    </select> 


    <?php 
} 

add_action('save_post', 'save_custom_element_grid_class'); 
function save_custom_element_grid_class(){ 

global $post; 

if(!isset($_POST["custom_element_grid_class"])): 
    return $post; 
    endif; 
    update_post_meta($post->ID, 'custom_element_grid_class', $meta_element_class); 
} 

?> 

我怎樣才能選擇價值與update_post_meta()保存呢?

回答

10

這裏是我測試的代碼和它的工作原理:

<?php 
/** 
* Plugin Name: Metabox test 
* 
*/ 

add_action('add_meta_boxes', 'so_custom_meta_box'); 

function so_custom_meta_box($post){ 
    add_meta_box('so_meta_box', 'Custom Box', 'custom_element_grid_class_meta_box', $post->post_type, 'normal' , 'high'); 
} 

add_action('save_post', 'so_save_metabox'); 

function so_save_metabox(){ 
    global $post; 
    if(isset($_POST["custom_element_grid_class"])){ 
     //UPDATE: 
     $meta_element_class = $_POST['custom_element_grid_class']; 
     //END OF UPDATE 

     update_post_meta($post->ID, 'custom_element_grid_class_meta_box', $meta_element_class); 
     //print_r($_POST); 
    } 
} 

function custom_element_grid_class_meta_box($post){ 
    $meta_element_class = get_post_meta($post->ID, 'custom_element_grid_class_meta_box', true); //true ensures you get just one value instead of an array 
    ?> 
    <label>Choose the size of the element : </label> 

    <select name="custom_element_grid_class" id="custom_element_grid_class"> 
     <option value="normal" <?php selected($meta_element_class, 'normal'); ?>>normal</option> 
     <option value="square" <?php selected($meta_element_class, 'square'); ?>>square</option> 
     <option value="wide" <?php selected($meta_element_class, 'wide'); ?>>wide</option> 
     <option value="tall" <?php selected($meta_element_class, 'tall'); ?>>tall</option> 
    </select> 
    <?php 
} 
+0

謝謝您的回答。但它不工作...值不是保存和選擇列表不更新... – freaky

+0

當你print_r($ _ POST)'你得到什麼? –

+0

什麼也沒有,一個空陣列...我真的不明白你的代碼如何可以節省一些東西... – freaky

相關問題