1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

Cant post the values from the meta_box in wp userfronted

Discussion in 'Content Management' started by No User Name, Nov 22, 2012.

  1. #1
    I am using the wp user frontend plugin and I have added some meta_box fields in it which I copied from the theme functions page. the fields look good but I have problem saving them (posting and inserting).

    This is what I have copied:

                            global $meta_box, $post;
    $prefix = 'foodpress_';
    
    $meta_box = array(
        'id' => 'meta-box',
        'title' => 'Recipe Info',
        'page' => 'post',
        'context' => 'normal',
        'priority' => 'high',
        'fields' => array(
            array(
                'name' => 'Number of servings',
                'desc' => 'Enter the number of servings (eg. "4")',
                'id' => $prefix . 'servings',
                'type' => 'text',
                'std' => ''
            ),
            array(
                'name' => 'Cooking time',
                'desc' => 'Enter the cooking time (eg. "45 minutes")',
                'id' => $prefix . 'cooking_time',
                'type' => 'text',
                'std' => ''
            ),
            array(
                'name' => 'Ingredients',
                'desc' => 'Enter all the ingredients (eg. "8 ounces dried soba noodles"). <strong>IMPORTANT:</strong> Seperate the ingredients with a single line break',
                'id' => $prefix . 'ingredients',
                'type' => 'textarea',
                'std' => ''
            )
        )
    );  
    
    
    
    
    
        // Use nonce for verification
        echo '<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />';
    
        echo '<table class="form-table">';
    
        foreach ($meta_box['fields'] as $field) {
            // get current post meta data
            $meta = get_post_meta($post->ID, $field['id'], true);
    
            echo '<tr>',
                    '<th style="width:20%"><label for="', $field['id'], '"><strong>', $field['name'], ':</strong></label></th>',
                    '<td>';
            switch ($field['type']) {
                case 'text':
                    echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30" style="width:97%" />',
                        '<br /><small>', $field['desc'],'</small>';
                    break;
                case 'textarea':
                    echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>',
                        '<br />', $field['desc'];
                    break;
                case 'select':
                    echo '<select name="', $field['id'], '" id="', $field['id'], '">';
                    foreach ($field['options'] as $option) {
                        echo '<option', $meta == $option ? ' selected="selected"' : '', '>', $option, '</option>';
                    }
                    echo '</select>';
                    break;
                case 'radio':
                    foreach ($field['options'] as $option) {
                        echo '<input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name'];
                    }
                    break;
                case 'checkbox':
                    echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />';
                    break;
            }
            echo    '<td>',
                '</tr>';
        }
    
        echo '</table>';
    
    Code (markup):

    and this are the functions that add the metaboxes in the admin panel for posting:


    //////////////////////////////////////////////////////////////////
    // Register custom meta box
    //////////////////////////////////////////////////////////////////
    $prefix = 'foodpress_';
    
    $meta_box = array(
        'id' => 'meta-box',
        'title' => 'Recipe Info',
        'page' => 'post',
        'context' => 'normal',
        'priority' => 'high',
        'fields' => array(
            array(
                'name' => 'Number of servings',
                'desc' => 'Enter the number of servings (eg. "4")',
                'id' => $prefix . 'servings',
                'type' => 'text',
                'std' => ''
            ),
            array(
                'name' => 'Cooking time',
                'desc' => 'Enter the cooking time (eg. "45 minutes")',
                'id' => $prefix . 'cooking_time',
                'type' => 'text',
                'std' => ''
            ),
            array(
                'name' => 'Ingredients',
                'desc' => 'Enter all the ingredients (eg. "8 ounces dried soba noodles"). <strong>IMPORTANT:</strong> Seperate the ingredients with a single line break',
                'id' => $prefix . 'ingredients',
                'type' => 'textarea',
                'std' => ''
            )
        )
    );
    
    add_action('admin_menu', 'mytheme_add_box');
    
    // Add meta box
    function mytheme_add_box() {
        global $meta_box;
    
        add_meta_box($meta_box['id'], $meta_box['title'], 'mytheme_show_box', $meta_box['page'], $meta_box['context'], $meta_box['priority']);
    }
    
    // Callback function to show fields in meta box
    function mytheme_show_box() {
        global $meta_box, $post;
    
        // Use nonce for verification
        echo '<input type="hidden" name="mytheme_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />';
    
        echo '<table class="form-table">';
    
        foreach ($meta_box['fields'] as $field) {
            // get current post meta data
            $meta = get_post_meta($post->ID, $field['id'], true);
    
            echo '<tr>',
                    '<th style="width:20%"><label for="', $field['id'], '"><strong>', $field['name'], ':</strong></label></th>',
                    '<td>';
            switch ($field['type']) {
                case 'text':
                    echo '<input type="text" name="', $field['id'], '" id="', $field['id'], '" value="', $meta ? $meta : $field['std'], '" size="30" style="width:97%" />',
                        '<br /><small>', $field['desc'],'</small>';
                    break;
                case 'textarea':
                    echo '<textarea name="', $field['id'], '" id="', $field['id'], '" cols="60" rows="4" style="width:97%">', $meta ? $meta : $field['std'], '</textarea>',
                        '<br />', $field['desc'];
                    break;
                case 'select':
                    echo '<select name="', $field['id'], '" id="', $field['id'], '">';
                    foreach ($field['options'] as $option) {
                        echo '<option', $meta == $option ? ' selected="selected"' : '', '>', $option, '</option>';
                    }
                    echo '</select>';
                    break;
                case 'radio':
                    foreach ($field['options'] as $option) {
                        echo '<input type="radio" name="', $field['id'], '" value="', $option['value'], '"', $meta == $option['value'] ? ' checked="checked"' : '', ' />', $option['name'];
                    }
                    break;
                case 'checkbox':
                    echo '<input type="checkbox" name="', $field['id'], '" id="', $field['id'], '"', $meta ? ' checked="checked"' : '', ' />';
                    break;
            }
            echo    '<td>',
                '</tr>';
        }
    
        echo '</table>';
    }
    
    add_action('save_post', 'mytheme_save_data');
    
    // Save data from meta box
    function mytheme_save_data($post_id) {
        global $meta_box;
    
        // verify nonce
        if (!wp_verify_nonce($_POST['mytheme_meta_box_nonce'], basename(__FILE__))) {
            return $post_id;
        }
    
        // check autosave
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
            return $post_id;
        }
    
        // check permissions
        if ('page' == $_POST['post_type']) {
            if (!current_user_can('edit_page', $post_id)) {
                return $post_id;
            }
        } elseif (!current_user_can('edit_post', $post_id)) {
            return $post_id;
        }
    
        foreach ($meta_box['fields'] as $field) {
            $old = get_post_meta($post_id, $field['id'], true);
            $new = $_POST[$field['id']];
    
            if ($new && $new != $old) {
                update_post_meta($post_id, $field['id'], $new);
            } elseif ('' == $new && $old) {
                delete_post_meta($post_id, $field['id'], $old);
            }
        }
    }
    Code (markup):
     
    No User Name, Nov 22, 2012 IP