Как полностью запретить создание одинаковых метаполей для типов постов?
Как можно запретить дублирование названия произвольных полей для определенных типов постов? И так же выводить сообщения о том что такое имя уже существует, задайте другое..
То есть, есть тип поста: 'mypost', необходимо для этого типа поста запретить создание одинаковых имён произвольных полей, и уведомлять об этом при создании в админке.
Чтобы проверять и если надо блокировать создание одинакового метаполя, нужно использовать хук "add_{$meta_type}_metadata" из функции add_metadata():
Вот написал код и даже проверил. Добавьте его в functions.php:
Для каких типов записей блокировать дублирование метаполя, укажите в массиве
array('post','page')
. Этот код блокирует для постов (post) и страниц (page)...Этот код никак не уведомляет, просто не дает создать одинаковые произвольные поля, через add_post_meta() или update_post_meta(). Универсально создать уведомления не получится. Это нужно сделать вручную при создании метаполя, проверяете, если не создалось, то наверное оно уже есть...
У меня пишет ошибку, вверху блока произвольных полей, при попытке создать такое же имя поля:
После обновления страницы, создание имена произвольных полей все же появляются..
И в других типах постов отличных от array('post','page') та же ситуация.
Да, ошибка в коде, замени 4 на 5 в первой строке:
Ошибка при создании
это побочный эффект, на самом деле - так срабатывает данный хук.
Благодарю, теперь работает отлично!
Указанная надпись появляется...
А можно как то вывести в этом блоке произвольных полей в админке надпись о том что нельзя создавать одинаковые имя полей?
Что бы пользователь видел в чем дело и не воспринимал это как ошибку.
Например где то возле надписи: "Добавить новое поле:" или "Произвольные поля позволяют добавлять к записям метаданные, которые вы можете использовать в своей теме." в самом низу блока произвольных полей?
И еще, при обновлении уже существующего дубля можно выполнить како ето действие с ним, например удалить обновляемый дубль?
Это не катит?
В данном примере ничего не происходит.
Я не понял, вообще нужно создать отдельный метабокс с нужными метаполями и добавлять их от туда, а стандартный метабокс добавления не трогать, через него и добавлять не очень удобно: надо сначала выбирать потом ставить значение.
Так не делается, есть плагин ACF и еще другие для создания метаполей. Прочитайте статью: http://wp-kama.ru/id_740/blok-proizvolnyih-poley-v-adminke-wordpress-svoimi-rukami.html
Имел ввиду именно в стандартном метабоксе произвольных полей вывести предупреждающую надпись, именно где то там где создается произвольное поле. Но если нету там возможности, то попробую вставить эту надпись jQuery скриптом.
Мне стандартный блок произвольных полей удобный, там можно добавлять с помощью ajax, без перезагрузки всей страницы.