在插入数据库的自定义 Table 之前验证 MetaBox
Validate MetaBox Before Inserting in The Custom Table of Database
我有一个 meta 框可以在书的 post 中插入 ISBN type.Here 是我的代码:
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 是唯一的,如果它不是唯一的,我们不应该存储图书 post 类型和 books_info。我该怎么做?
您可以通过在插入之前添加预查询来检查 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 ) );
}
}
我有一个 meta 框可以在书的 post 中插入 ISBN type.Here 是我的代码:
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 是唯一的,如果它不是唯一的,我们不应该存储图书 post 类型和 books_info。我该怎么做?
您可以通过在插入之前添加预查询来检查 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 ) );
}
}