我收到以下错误。。。
Notice: Undefined index: album_tracks_metabox_nonce in /Applications/MAMP/htdocs/TheToasters/wp-content/themes/Toasters/discography-post-type.php on line 124
...每当我尝试添加新页面、帖子或自定义帖子类型条目时。如果我正在编辑现有条目,则一切正常。
该错误似乎与我创建的“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\' ) )
最合适的回答,由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`
}