Добавить выпадающий список, который динамически изменяется в пользовательской форме администратора типа записи WordPress

#wordpress #dropdown #custom-post-type

#wordpress #выпадающий список #пользовательский тип записи

Вопрос:

Мне нужно создать пользовательский тип записи в WordPress с полем под названием «код». Давайте назовем этот CPT «city-code». Каждый код связан с городом. Эта связь представлена в формате JSON следующим образом:

 {
  cities: [
    {
     name: "New York",
     codes: [1,2,3]
    }
    ...
  ]
}
 

Я не хочу, чтобы пользователь вводил код вручную при создании сообщения в области администрирования. Чтобы избежать этой проблемы, я хочу реализовать два выпадающих списка. В первом выпадающем списке есть список городов. Когда пользователь выбирает город, во втором выпадающем списке должен быть включен список кодов, связанных с этим городом. Например, если пользователь выбирает «Нью-Йорк», второй выпадающий список позволит пользователю выбрать 1, 2 или 3 кода.

У меня нет вопросов о реализации динамики выпадающего списка.

Вопрос в том, как я могу добавить эти пользовательские выпадающие списки в область добавления / редактирования CPT?

Я пробовал плагин Advanced Custom Fields Pro, но он не предлагает настраиваемых параметров, которые отвечают моим потребностям.

Ответ №1:

Чтобы решить эту проблему, я сначала использовал пользовательский метабокс для создания двух пользовательских полей: одно для города, другое для кода.

В каждом пользовательском поле я определил уникальный класс, который может обрабатываться скриптом javascript. Затем я пишу скрипт Jquery, который обрабатывает change событие в первом поле. Когда пользователь изменяет его, я просто переписываю список параметров во втором поле с помощью Jquery.

Наконец, я просто загрузил поля в нужную мне область.

Используя этот подход, WordPress сохраняет оба значения (город и код) как мету записи. Это может быть get с помощью get_post_meta функции.