Проверьте Метабокс Перед Вставкой в Пользовательскую таблицу базы данных

#wordpress #meta-boxes

Вопрос:

У меня есть мета-поле для вставки ISBN в тип публикации книги.Вот мой код:

 add_action('add_meta_boxes', 'book_isbn_meta_box');
function book_isbn_meta_box()
 {
   add_meta_box(
     'book_isbn_meta_box',
     'Book ISBN',
     'book_isbn_meta_box_content',
     'books',
   );
  }

function book_isbn_meta_box_content($post)
 {
   wp_nonce_field(plugin_basename(__FILE__), 'book_isbn_meta_box_content_nonce');
   ?>
    <label for="isbn"></label>
    <input type="text" id="isbn" name="isbn" placeholder="Enter ISBN" />
   <?php
 }
add_action('save_post', 'book_isbn_meta_box_save');
function book_isbn_meta_box_save($post_id)
 {
   $isbn = $_POST['isbn'];
   global $wpdb;
   $table_name = $wpdb->prefix . "books_info";
   $wpdb->insert($table_name, array('post_id' => $post_id, 'isbn' 
    => $isbn) );
 }
 

Теперь я хочу проверить ISBN на уникальность, и если бы он не был уникальным, мы не должны хранить тип публикации книги и books_info. Как я могу это сделать?

Комментарии:

1. В вашей функции book_isbn_meta_box_save. Вы должны проверить наличие.

2. @HowardE Не могли бы вы объяснить с помощью кода?

Ответ №1:

Вы можете проверить наличие кода isbn, добавив предварительный запрос перед вставкой. Не проверено, но должно работать:

 function book_isbn_meta_box_save($post_id){
    $isbn = $_POST['isbn'];
    global $wpdb;
    $table_name = $wpdb->prefix . "books_info";
    
    $existing = $wpdb->get_var("SELECT post_id from $table_name WHERE isbn = $isbn;")
    if (!$existing) {
        $wpdb->insert( $table_name, array( 'post_id' => $post_id, 'isbn' => $isbn ) );
    }
}