2015-02-05 17 views
0

我是一个WP主题开发人员nobie,我在保存自定义元框值时遇到了问题。自定义元框保存值问题 - 弃用:函数ereg()和更多

我发现一些教程,其中解释了如何做到这一点。

我已经包含了一个名为自定义元盒,save.php我的functions.php用下面的代码中的文件:

<?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'); 
?> 

击中发布的文章和网页后,我得到了一些错误的时我的wp_debug已打开:

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 

帮助非常需要,因为我的截止日期非常接近。

谢谢!

回答

0

使用preg_match代替ereg

例如, preg_match('/edit.php/', $_SERVER['SCRIPT_NAME'])

您是否需要在函数的顶部使用global来定义$ data?

相关问题