san_jorich
@san_jorich
Творческий кодер

Параметры произвольного поля WP. Как прописать Custom field label?

Пишу ajax генерацию произвольных полей непосредственно пользователем "налету".
При создании, с использованием функции add_post_meta( $post_id, $meta_key, $meta_value, $unique ) мы вбиваем ид записи, ключ, значение и уникальность )
Вопрос: где, как, и куда вбивается label (Название)?
Если оно вбивается как ключ, то получается, что при желании пользователя отредактировать только название поля скрипт должен менять ключ ($meta_key) - а это по-сути создание нового и удаление текущего (меняемого) произвольного поля?
Или label произвольного поля как-то и куда-то прописывается?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Label в данном случае это просто string, который вы отображаете в UI? То есть, каждое созданное поле будет иметь 2 "параметра" - label (то что отображается возле поля) и value (то, что ввели в поле)? Я тут вижу еще одно узкое место - когда вы доберетесь до полей других типов (number, radio, checkbox и тд), то у вас возникнут дополнительные "параметры" - тип поля и другие свойства. И вот тут все станет намного интереснее :)

Есть такой вариант - хранить в postmeta сразу 2 записи на одно поле:

fieldname => field value (значение)
fieldname_label => label value (лейбл)

Называть поля можно по разному. Например:

fieldname => value
_fieldname = label

В этом случае поле, которое начинается с подчеркивания, считается "скрытым" и "системным". Можно суффикс добавлять. Ну а дальше понадобится куча "подсистем", чтобы с этим удобно было работать.

А есть еще один вариант - хранить всю (любую) необходимую информацию в значении поля в виде сериализованного массива. Очевидный минус - по такому полю искать будет сложно (впрочем, внешнее индексирование с помощью того же Elastic Search проблему решит). В остальном - пихайте туда что хотите - значение поля, его лейбл, плейсхолдер, лимит символов и тд. Да хоть весь html целиком.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы