我正在从头开始开发自定义主题,创建自定义帖子类型,并在编辑自定义帖子类型时收到此警告。我还设计了带有两个输入字段的自定义元框,并在其中使用nonce。删除这些警告有什么帮助吗?
下面是函数中自定义元框的代码。php
//Custom Metabox
function register_book_meta_box(){
add_meta_box(\'book_meta_box_id\', \'Book Detail\',\'design_book_meta_box\',\'books\',\'advanced\',\'high\');
}
add_action(\'add_meta_boxes\',\'register_book_meta_box\');
function design_book_meta_box($post){
wp_nonce_field(basename(__FILE__),\'book_cpt_nonce\')
?>
<div>
<label for="book-author">Author Name </label>
<input type="text" name="book-author" placeholder="Author Name" value="<?php echo get_post_meta( $post->ID, \'book-author-key\', true );?>">
</div>
<div>
<label for="year">Published Year</label>
<input type="number" id="year" name="year" min="1455" max="2020" value="<?php echo get_post_meta( $post->ID, \'book-year-key\', true );?>">
<span id="errorMsg" style="display:none;">Published Year Must be range from 1455 - 2020</span>
</div>
<?php
}
function save_book_meta_data($post_id)
{
if(!isset($_POST[\'book_cpt_nonce\']) || !wp_verify_nonce($_POST[\'book_cpt_nonce\'],basename(__FILE__))){
return $post_id;
}
if (array_key_exists(\'book-author\', $_POST)) {
update_post_meta( $post_id,\'book-author-key\', $_POST[\'book-author\']
);
}
if (array_key_exists(\'year\', $_POST)) {
update_post_meta( $post_id,\'book-year-key\', $_POST[\'year\']
);
}
}
add_action(\'save_post\', \'save_book_meta_data\');
SO网友:Tony Djukic
阿里,正如评论中提到的,这里是我用来保存的方法。如您所见,它设置了分类字段,然后一次性运行保存过程,而不是反复设置每个字段的逻辑。
function save_book_meta_data( $post_id ) {
if( !current_user_can( \'edit_post\', $post_id ) ) {
return $post_id;
}
if( !isset( $_POST[\'book_cpt_nonce\'] ) || !wp_verify_nonce( $_POST[\'book_cpt_nonce\'], basename( __FILE__ ) ) ) {
return $post_id;
}
$ali_book_meta[\'book-author-key\'] = esc_textarea( $_POST[\'book-author-key\'] );
$ali_book_meta[\'book-year-key\'] = esc_textarea( $_POST[\'book-year-key\'] );
foreach( $ali_book_meta as $key => $value ) :
if( \'revision\' === $post->post_type ) {
return;
}
if( get_post_meta( $post_id, $key, false ) ) {
update_post_meta( $post_id, $key, $value );
} else {
add_post_meta( $post_id, $key, $value);
}
if( !$value ) {
delete_post_meta( $post_id, $key );
}
endforeach;
}
add_action( \'save_post\', \'save_book_meta_data\', 1, 2 );
我不知道这是否解决了您的实际问题,但您可以尝试一下,看看会发生什么。
它确实确保只有具有编辑功能的用户才能进行更改,并避免更新修订,因为它们不应该更新,否则它们就不是修订,而是克隆。