0

I'm a WP theme dev nobie and I have problems with saving custom meta boxes values.

I found some tutorial where its explained how to do this.

I have included a file called custom-meta-boxes-save.php within my functions.php with the following code:

<?php 
function save_postdata( $post_id ) {
    global $post, $new_meta_boxes, $page_settings, $blogroll, $post_settings, $team_info, $slide_info, $meta_box_groups;


    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
        return $post_id;
    }

    if( defined('DOING_AJAX') && DOING_AJAX ) { //Prevents the metaboxes from being overwritten while quick editing.
        return $post_id;
    }

    if( ereg('/\edit\.php', $_SERVER['REQUEST_URI']) ) { //Detects if the save action is coming from a quick edit/batch edit.
        return $post_id;
    }
    foreach($meta_box_groups as $group) {
        foreach($group as $meta_box) {

            if(isset($_POST[$meta_box['name'].'_noncename'])){
                if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], $meta_box['name'].'-meta' )) {
                    error_log(print_r($meta_box, TRUE).'{err_end}');
                    return $post_id;
                }
            }

            if ( isset($_POST['post_type']) && 'page' == $_POST['post_type'] ) {
                if ( !current_user_can( 'edit_page', $post_id ))
                    return $post_id;
            } else {
                if ( !current_user_can( 'edit_post', $post_id ))
                    return $post_id;
            }

            if(isset($_POST[$meta_box['name'].'_value'])){
                $data = $_POST[$meta_box['name'].'_value'];
            }

            if(get_post_meta($post_id, $meta_box['name'].'_value') == "") 
                add_post_meta($post_id, $meta_box['name'].'_value', $data, true);
            elseif($data != get_post_meta($post_id, $meta_box['name'].'_value', true))
                update_post_meta($post_id, $meta_box['name'].'_value', $data);
            elseif($data == "" || $data == $meta_box['std'] )
                delete_post_meta($post_id, $meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));

        } // end foreach
    } // end foreach
} // end save_postdata

add_action('save_post', 'save_postdata');
?>

After hitting publish for posts and pages I get a number of errors when my wp_debug is turned on:

Deprecated: Function ereg() is deprecated in /home/creat/domains/tester.net/public_html/re/wp-content/themes/rev2/includes/custom-meta-boxes-save.php on line 14

Notice: Undefined variable: data in /home/creat/domains/tester.net/public_html/re/wp-content/themes/rev2/includes/custom-meta-boxes-save.php on line 41

Notice: Undefined variable: data in /home/creat/domains/tester.net/public_html/re/wp-content/themes/rev2/includes/custom-meta-boxes-save.php on line 43

Warning: Cannot modify header information - headers already sent by (output started at /home/creat/domains/tester.net/public_html/re/wp-content/themes/rev2/includes/custom-meta-boxes-save.php:41) in /home/creative/domains/ctproject.net/public_html/sa2/wp-admin/post.php on line 233

Warning: Cannot modify header information - headers already sent by (output started at /home/creat/domains/tester.net/public_html/re/wp-content/themes/rev2/includes/custom-meta-boxes-save.php:41) in /home/creative/domains/ctproject.net/public_html/sa2/wp-includes/pluggable.php on line 1178

Help much needed as my deadline is VERY CLOSE.

Thanks!

0

Try the following. Replace

ereg('/\edit\.php', $_SERVER['REQUEST_URI'])

with

preg_match('/edit.php/',  $_SERVER['REQUEST_URI'])

And also change

if(isset($_POST[$meta_box['name'].'_value'])){
    $data = $_POST[$meta_box['name'].'_value'];
}

to

if(isset($_POST[$meta_box['name'].'_value'])){
    $data = $_POST[$meta_box['name'].'_value'];
}
else
    $data = "";

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.