Found 2 elements with non-unique id (#_ajax_nonce) and (#_wpnonce)

I am developing custom theme from scratch and creates a custom post type and getting this warning while editing custom post type. I also design custom Meta box with two input fields and using nonce in it. Any help removing these warning?

Here is code of custom metabox in functions.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-authorAuthor Namenbsp;nbsp;/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=yearPublished 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');

Topic nonce metabox custom-field custom-post-types Wordpress

Category Web


Ali, as mentioned in the comments here's the method I'd use to save. As you can see, it sets out the assorted fields and then runs the save process a single time, rather than setting the logic over and over for each field.

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

I don't know if that addresses your actual issue but you could give it a try and see what happens.

It does ensure that only users with edit capabilities can make changes and avoids updating revisions because they shouldn't be updated, otherwise they wouldn't be revisions, they'd just be clones.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.