Создаем свой собственный тип записей в WordPress, часть 2

11
12039

В предыдущей части мы создали новый тип записи и добавили к нему наши кастомные категории, вывели новый пункт меню и дали ему свою иконку. Продолжим создавать новый тип записи, мы назвали его «Красная книга». Сейчас нам надо добавить дополнительные поля, ранее я писал статью на эту тему — Создаем свои дополнительные поля (metaboxes) в WordPress. Используя основу из этой статьи мы сделаем дополнительные поля под нашу задачу.

Дополнительные поля будут следующие:

  1. Тип
  2. Отряд
  3. Вид
  4. Класс
  5. Дата занесения в красную книгу

Примерно это будет выглядеть следующим образом:

Реализация

Открываем файл functions.php и добавляем туда регистрацию новой дополнительной области:

Опишем в массиве требуемые нам поля:

В этом массиве мы описали все элементы для дополнительной зоны, так нам будет легче их создать через цикл foreach, по сути, можно было описать их в самой функции, но так проще.

Выведем описанные дополнительные поля в новую дополнительную зону:

Как видите, мы воспользовались циклом foreach и отобразили все описанные в цикле поля через оператор switch/case , которые проверял поле на его тип (text, select) и выводил их соответствующим тегом.

Напишем функцию, которая будет сохранять введенные в новые формы данные в базу данных:

Вышеописанный код полностью прокомментирован, описание каждой не понятной для Вас функции можно найти в документации wordpress.

В результате мы получили полноценные рабочие дополнительные поля, которые видны только в разделе «Красная книга».

На этом вторая часть закончена. В следующий раз, мы закончим работу над датой (datepicker), добавим поле для изображения и выведем все на сам сайт.

11 КОММЕНТАРИИ

  1. Ваш код весьма опасен.

    add_action(‘save_post’, ‘save_my_red_meta_fields’); // Запускаем функцию сохранения
    будет запускаться при ЛЮБОМ сохранении (обновлении) ЛЮБОГО поста/страницы/вложения

    • Спасибо за комментарий! В чем именно Вы наблюдаете опасность? Например, функция сохранения/обновления дополнительных полей, созданных через пункт запись в WordPress, имеет аналогичную структуру.

    • Возможно слово опасен не очень подходит, я имел ввиду, что Ваш код будет выполняться при сохранении любой записи любого типа. Хотя бы проверку на тип записи надо.
      Ну и при выполнении с высоким уровнем отладки (E-NOTICES включено) валятся предупреждения что поле с проверочным кодом не найдено (что логично, если я сохраняю запись обычного типа, где вообще никаких метаполей нет).

    • Привет! Благодарю за комментарий! Вы абсолютно правы. В моём коде проверка есть(!), но я ошибочно проверял тип записи на if (‘page’ == $_POST[‘post_type’]), поэтому возникали такие e-notice. В данном коде я исправил это, теперь всё работает! if (‘red_book’ == $_POST[‘post_type’]).
      Спасибо что заметили!

  2. Подскажите, пожалуйста, как сделать поиск среди записей по дополнительному полю?

  3. Добрый день!
    Спасибо большое за полезный материал. Создала новый тип записей, создала необходимые поля к нему. Собралась уже создавать к нему миниатюру и галерею, но тут сообразила, что это ведь уже есть в стандартном типе записей.
    Как сделать так, чтобы в новом типе записей сохранилось все, что есть в обычном, и при этом добавились новые поля?

  4. У меня в записях Красной книги, после добавления кода который опубликован в этой статье не появилось окно для ввода дополнительной информации :(

  5. Добрый день!
    Подскажите, есть ли возможность реализовать ввод данных таким образом: например, есть окно input, в который вводится число, и далее появляется, например, ряд новых input’ов, количество которых равно этому числу?

ОСТАВЬТЕ ОТВЕТ

Пожалуйста оставьте комментарий!
Введите ваше имя