“注意:未定义索引:”添加新内容时出错?

时间:2015-01-11 作者:Brad Adams

我收到以下错误。。。

Notice: Undefined index: album_tracks_metabox_nonce in /Applications/MAMP/htdocs/TheToasters/wp-content/themes/Toasters/discography-post-type.php on line 124

...每当我尝试添加新页面、帖子或自定义帖子类型条目时。如果我正在编辑现有条目,则一切正常。

Error screenshot

该错误似乎与我创建的“Discography”自定义帖子类型上的metabox的nonce有关,以下是相关代码:

function album_tracks_content( $post ) {
    wp_nonce_field( \'album_tracks_metabox\', \'album_tracks_metabox_nonce\' );
    $albumTracks = get_post_meta( get_the_ID(), \'album_tracks\', true);?>
    <p>1. <input type="text" id="track1" name="track1" placeholder="Track name" value="<?php echo isset($albumTracks[0]) ? $albumTracks[0] : \'\'; ?>"></p>
    <p>2. <input type="text" id="track2" name="track2" placeholder="Track name" value="<?php echo isset($albumTracks[1]) ? $albumTracks[1] : \'\'; ?>"></p>
<?php }
// Save Tracks metabox
function album_tracks_save( $post_id ) {
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) 
    return;

    if ( !wp_verify_nonce( $_POST[\'album_tracks_metabox_nonce\'], \'album_tracks_metabox\' ) )
    return;

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

    $albumTracks = array();
    if (isset($_POST[\'track1\'])):
        $albumTracks[] = $_POST[\'track1\'];
    endif;
    if (isset($_POST[\'track2\'])):
        $albumTracks[] = $_POST[\'track2\'];
    endif;
    if (!empty($albumTracks)):
        update_post_meta( $post_id, \'album_tracks\', $albumTracks );
    endif;
}
add_action( \'save_post\', \'album_tracks_save\' );

?>
确切的路线124 这是:

if ( !wp_verify_nonce( $_POST[\'album_tracks_metabox_nonce\'], \'album_tracks_metabox\' ) )

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

无论是谁编写了你的主题,在使用数组键之前都不会费心去验证它们的存在。由于密钥album_tracks_metabox_nonce 中不存在$_POST 大堆

该行可能为:

if (
  !isset($_POST[\'album_tracks_metabox_nonce\']) ||
  !wp_verify_nonce($_POST[\'album_tracks_metabox_nonce\'], \'album_tracks_metabox\')
) {
  // whatever is in the if condition, likely `return`
}

结束

相关推荐

我需要使用NONCE吗?

我正在用ajax、jquery和php创建一个访问/页面视图计数器,我已经阅读了一些文章,建议通过ajax使用nonces进行数据操作,但是我不确定是否需要将nonces用于我的简单计数器?我的代码看起来有点像这样;jqueryjQuery.ajax({ type: \'POST\', url: ajaxurl, data: {action: \'countHits\', status: \'true\'},