Intereting Posts
Невозможно добавить подменю в существующее меню плагина if заявление для WordPress по умолчанию показан на одном сообщении Таксономии существуют, но не появляются Нужна помощь в установке дочерней темы Хоффмана Когда get_template_part () предпочтительнее простого использования файлов template.php? Вход в несколько поддоменов без Multisite Значения пользовательских настроек не сохраняются в пользовательской теме Многоязычный сайт WordPress с использованием файлов page-id.php Пользовательский вид дерева таксономии не отображается правильно в бэкэнд Назначить минимальный результат для коротких кодов запросов WooCommerce? WordPress WP Media Неверные адреса Клонирование / копирование / копирование настроек администратора панели мониторинга Предупреждение: call_user_func_array () Как отобразить раздел на определенное время Могу ли я настроить адрес электронной почты на контактную форму 7?

Пользовательское поле WordPress должно быть уникальным. Является ли это возможным?

У меня есть настраиваемое поле под названием «website_url». Он должен быть уникальным.

Пример: если автор установил « https://wordpress.stackexchange.com/questions/ask » в качестве значения настраиваемого поля в качестве сообщения, « https://wordpress.stackexchange.com/questions/ask » не может использоваться любой другой должности.

Как это сделать?

Solutions Collecting From Web of "Пользовательское поле WordPress должно быть уникальным. Является ли это возможным?"

Вы можете использовать 'add_post_metadata' и 'update_post_meta' , если функция, подключенная туда, возвращает ничего, кроме NULL процесс добавления / обновления метаданных прекращается.

Два крючка проходят почти одинаковые аргументы:

  1. НОЛЬ
  2. сообщение id
  3. мета-ключ
  4. добавление / обновление метаданных

Только последний аргумент отличается, в случае, если обновление является предыдущим значением, в случае добавления это $unique значение, переданное add_post_meta .

Идея такова:

  1. запустить обратный вызов фильтра для обоих крючков
  2. используйте специальный SQL-запрос, чтобы убедиться, что значение уникально
  3. id значение уже используется, а затем возвращает ничего, кроме NULL

Пример:

 add_filter( 'add_post_metadata', 'my_unique_url_meta', 10, 4 ); add_filter( 'update_post_metadata', 'my_unique_url_meta', 10, 4 ); function my_unique_url_meta( $null, $pid, $key, $value ) { // here I assume the meta key to force unique is "url", change this to fit your needs if ( $key !== 'url' ) return $null; global $wpdb; $exists = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->postmeta} WHERE meta_key = %s AND meta_value = %s", $key, $value ) ); // return anything but NULL stop the process, however returning FALSE is the only way // to obtain a "pretty" error message by WordPress in post admin screen if ( ! empty( $exists ) ) return FALSE; } 

Используя предыдущий код, когда мета-поле для мета-ключа уже завершено, вы получаете сообщение об ошибке, например «Укажите произвольное значение поля». так же, как вы не указали какое-либо настраиваемое значение поля, и я боюсь, что это сообщение не может быть изменено. Кроме того, если после добавления уже используемого мета-значения для настраиваемого поля вы просто сохраняете / обновляете сообщение (прежде чем нажимать кнопку «Добавить пользовательское поле» внутри метабокса), вы не увидите сообщения об ошибке, но когда страница перезагружается, пользовательское поле просто не существует.

Предупреждение Previuos применяется только к метаконтакту ядра «Custom Fields», но вы можете использовать специальный метабокс для своего уникального метаки и использовать ajax для отображения правильного сообщения об ошибке, однако мой код гарантирует, что никто не может добавить не уникальное мета значение, даже используя код (а не пользовательский интерфейс).