Поддержка Плагины Добавить поле в окно редактирования нового типа записей

  • Всем доброго дня. Добавил новый тип записей (посредством register_post_type). Имеются ли встроенные функции WP, позволяющие добавлять дополнительные поля в окно добавления/редактирования такой записи, как это делается, например, для настроек плагина. Или добавить такое поле в окно редактирования обычной записи. Задача в том, чтобы добавить дополнительное поле в виде выпадающего списка, который содержит набор значений и при добавлении записи нового типа, пользователь кроме ввода содержимого записи, выбирает еще и значение из этого списка. Затем выбранное значение нужно сохранить в базе с привязкой к посту.
    Это я пытаюсь создать плагин, позволяющий привязывать записи к определенным страницам.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Если я правильно понял — Вам нужны произвольные поля и их оформление — метабоксы

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

    добавляется новая страница или набор страниц. После этого при добавлении новой записи

    Что такое «набор страниц» я не представляю, но страницы вообще не имеют никакого отношения к записям
    См https://codex.wordpress.org/%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B
    Вероятно Вам нужна таксономия для вашего кастомного типа. (как рубрики для записей). Или всё же произвольные поля связанные с определённым шаблоном(ами) темы.

    Набор страниц — это когда в шапке сайта написано: О компании, Продукция, Обратная связь и т.д. и щелкая на определенную страницу, вы получаете контент, привязанный только к ней.
    В данном случае основная часть записей должна выходить в виде ленты новостей, но часть информации должна быть привязана к определенным страницам. Например, есть раздел Документы и нужно во-первых, чтобы у администратора сайта была возможность добавлять набор сканов и каждый набор выходил бы в виде отдельной записи в ленте записей и во-вторых, чтобы эти записи не могли отображаться нигде кроме как на странице Документы. Таксономии — это просто способ отбора записей в стандартной ленте записей блога.

    На данный момент я пока реализовал это через костыли. Создал новый тип записи (допустим MyNewType). Создал отдельный шаблон страницы, в коде которой прописал вывод данных с отбором по типу MyNewType. В результате все записи с моим новым типом выводятся только на определенной странице. Но если идти таким путем, то нужно под каждую страницу создавать свой шаблон и свой тип — в принципе выход, но некрасивый.

    т.е. про рубрики вы никогда не слышали?
    привязываете свои записи к нужной рубрике, добавляете в меню ссылку на рубрику

    Набор страниц — это когда в шапке сайта написано: О компании, Продукция, Обратная связь и т.д. и щелкая на определенную страницу, вы получаете контент, привязанный только к ней.

    Это называется «меню». И создаётся в админке как угодно.

    Про остальное.. перестал понимать вообще.

    tuxfighter, рубрика — это просто фильтр — если пользователь не выбрал рубрику, то выходят ВСЕ записи, в т.ч. привязанные к рубрикам. В моем случае требуется, чтобы определенные записи могли быть выведены ТОЛЬКО при выборе определенного пункта меню и НИКАК иначе. Ну привязал я записи к рубрике Документы и если пользователь выберет эту рубрику, он увидит набор соответствующих записей, но если он никакой рубрики не выберет, то все записи, относящиеся к рубрике Документы выйдут в общей ленте записей.

    В моем случае требуется, чтобы определенные записи могли быть выведены ТОЛЬКО при выборе определенного пункта меню и НИКАК иначе. Ну привязал я записи к рубрике Документы и если пользователь выберет эту рубрику, он увидит набор соответствующих записей,

    Ну и какие проблемы вывести в меню рубрику «документы»? Вы это не знаете как сделать?

    но если он никакой рубрики не выберет,

    Где «не выберет»? А что выберет/сделает?

    , то все записи, относящиеся к рубрике Документы выйдут в общей ленте записей.

    И что?

    В общем, моя задача решается следующим образом:
    1. Создается пользовательский тип (допустим, «Отдельные записи») при помощи register_post_type
    2. Создается пользовательская таксономия (допустим, «Раздел отдельных записей») с привязкой к пользовательскому типу «Отдельные записи». Создание таксономии при помощи register_taxonomy.
    3. Заходим в эту пользовательскую таксономию и добавляем элементы (допустим, «Документы», «О нас» и т.д.)
    4. Заходим Внешний вид — Меню (в настройках экрана ставим галочку на «Раздел отдельных записей»). В метаданных появляется раздел нашей таксономии «Раздел отдельных записей» и там выбираем «Документы», «О нас» и т.д. и жмем «Добавить в меню».
    5. При создании записи пользовательского типа ставим галочку на нужной нам таксономии.

    После этого на странице нашего сайта появится меню «Документы», «О нас» и т.д. и записи, привязанные к этим пунктам меню не будут отображаться в общей ленте записей, а только при нажатии на соответствующем пункте меню. Если запись пользовательского типа не привязана ни к одной таксономии, то она вообще нигде не появится.

    Спасибо за помощь.

    • Ответ изменён 6 лет, 5 месяцев назад пользователем flufly.
    • Ответ изменён 6 лет, 5 месяцев назад пользователем flufly.

    Как я уже писал выше, моя задача решена. Но т.к. изначально в числе основных вопросов был следующий: «Имеются ли встроенные функции WP, позволяющие добавлять дополнительные поля в окно добавления/редактирования такой записи?», то опишу способ решения такой задачи. Решение в добавлении метаполя посредством метода add_meta_box. В результате, в окне добавления/редактирования записи (можно привязать к обычной записи, а можно и к записи пользовательского типа) добавляются дополнительные поля и значения этих полей сохраняются в базе данных с привязкой к идентификатору записи.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • Тема «Добавить поле в окно редактирования нового типа записей» закрыта для новых ответов.