Wordpress- предотвратить дублирование значения настраиваемого поля

Я хочу проверить значения meta-key называется cf_isbn уже в базе данных в таблице wp-postmeta, Если значение повторяется, запретите вставку содержимого.

У меня есть кусок кода, который работает правильно, если я поставлю xxxxxxx значение моего поля ISBN в пост-вводе внешнего интерфейса, но главное - это изменение xxxxxxx с запросом для проверки значений уже существует в базе данных.

Есть ли мастер php, который знает, как мне помочь?

function wpufe_isbn_validation( $errors ) {
    if( $_POST['cf_isbn'] == 'xxxxxxx' ) {
        $errors[] = 'this ISBN is already in database';
    }

    return $errors;
}
add_filter( 'wpuf_add_post_validation', 'wpufe_isbn_validation' );

1 ответ

Решение

Вы должны быть в состоянии сделать что-то вроде этого:

function wpufe_isbn_validation( $errors )
{
    global $wpdb;
    $check = $wpdb->query( $wpdb->prepare("
    SELECT *
    FROM wp-postmeta
    WHERE meta_key = cf_isbn AND meta_value = ".$_POST['cf_isbn']) );


    if(!empty($check))
    {
       return true;
    }
    else
    {
       return false;
    }
}
add_filter( 'wpuf_add_post_validation', 'wpufe_isbn_validation' );

Затем вы можете просто выполнить другую функцию / фрагмент кода в зависимости от того, что возвращается. Очевидно, что если вышеприведенное возвращает true, тогда ISBN дублируется и не нуждается в вставке.

Другие вопросы по тегам