2013-07-19 6 views
5

मैं मेटा बॉक्स से वर्डप्रेस डेटाबेस में कुछ डेटा सहेजने की कोशिश कर रहा हूं।चयनित ड्रॉपडाउन सूची से मेटा बॉक्स डेटा सहेजें

मुझे कुछ विकल्प चुनने के लिए एक ड्रॉपडाउन सूची मिली है और मैं मेटा बॉक्स के लिए डेटाबेस में चयनित विकल्प को सहेजना चाहता हूं।

<?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() के साथ सहेजें कैसे प्राप्त कर सकते हैं:

हालांकि मैं PHP में बचाने के समारोह के साथ कुछ परेशानी होती है?

उत्तर

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

संबंधित मुद्दे