在Metabox上保存内容时出现未定义的索引错误

时间:2014-07-07 作者:nivims

当debug设置为TRUE时,我正在尝试调试WP后端上的“未定义索引”错误。违反规定的是:

if ( !wp_verify_nonce( $_POST[\'pdwt_meta_noncename\'], plugin_basename(__FILE__) )) {
    return $post->ID;
}
然后,我将其更改为通过添加以下内容来检查值是否已设置:

if ( isset( $_POST[\'pdwt_meta_noncename\']) || ! wp_verify_nonce( $_POST[\'pdwt_meta_noncename\'], plugin_basename(__FILE__) )) {
    return $post->ID;
}
添加使错误消失,但当我在自定义字段中输入信息时,它不会保存。

自定义字段的设置方式如下:

echo \'<input type="hidden" name="pdwt_meta_noncename" id="pdwt_meta_noncename" value="\' .
    wp_create_nonce( plugin_basename(__FILE__) ) . \'" />\';
这是save_post 零件:

foreach ($pdwt_meta as $key => $value) { // loop through the $pdwt_meta array
    if( $post->post_type == \'revision\' ) return; // make sure the data isn\'t stored twice
    $value = implode(\',\', (array)$value); // if $value is in an array, make it a comma seperated value
    if(get_post_meta($post->ID, $key, FALSE)) { // if the custom field already has a value
        update_post_meta($post->ID, $key, $value);
    } else { // AND IF IT DOESN\'T ALREADY HAVE A VALUE
        add_post_meta($post->ID, $key, $value);
    }
    if(!$value) delete_post_meta($post->ID, $key); // DELETE IF IT\'S EMPTY
}     
add_action(\'save_post\', \'pdwt_save_meta\', 1, 2); // SAVE THE CUSTOM FIELDS 
我没有写主题的这一特定部分。有什么想法吗?

1 个回复
SO网友:nivims

通过对Tutsplus教程(包含链接)的以下评论解决:

在功能中save_meta(), 替换此行:

if (!wp_verify_nonce($_POST[\'custom_meta_box_nonce\'], basename(__FILE__)))
使用此行:

if (!isset($_POST[\'custom_meta_box_nonce\']) || !wp_verify_nonce($_POST[\'custom_meta_box_nonce\'], basename(__FILE__)))
查看完整注释here.

结束