Добавление произвольных типов записей в wordpress

Добавление произвольных типов записей в wordpress

Сегодня мы научимся создавать собственные типы контента (записей, постов в wordpress) и выводить их на сайте. По умолчанию wordpress имеет для публикации контента два раздела – записи (они же посты) и страницы. Для расширенного сайта, удобно иметь дополнительные разделы для материалов. Например Вы хотите сделать каталог фильмов, или любой другой каталог и выделить его из общего потока контента не только в публичной части сайта, но и в админке. Этому мы научимся в данном уроке.

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

Произвольные типы записей и поля:

  1. Добавление произвольных типов записей в WordPress
  2. Вывод произвольных типов записей в WordPress
  3. Добавление произвольных полей к записям в WordPress
  4. Вывод произвольных полей в записях WordPress

 

Добавление произвольных типов записей в wordpress

Добавить произвольные типы записей можно вручную — прописав нужный код в файле functons.php (что не рекомендуется) или создав свой специальный плагин. Или можно воспользоваться специальными плагинами. Результат будет один и тот же. Я специально сначала изучил как работает добавление кастомных типов записей через код, и потом попробовал делать тоже самое с использованием готовых плагинов. Должен сказать что пользоваться специальными плагинами намного удобнее, и быстрее. А результат получается одинаковый. Поэтому в это уроке мы рассмотрим использование плагинов.

Первое. Установка плагина

Для добавление произвольных типов записей мы будем использовать следующие плагины. На самом деле нужен всего один плагин, но я дам ссылку на два самых популярных плагина в этой теме. Первый, который мы будем использовать, плагин Types, второй Custom Post Type UI он в принципе дублирует функционал первого, но не такой красивый и удобный.

Скачиваем и устанавливаем на свой WordPress сайт плагин Types. Его будет достаточно.

Второе. Создаем индивидуальный тип постов

Установив, открываем в левом меню раздел плагина Types → пункт Типы и таксономии.

Добавление произвольных типов записей в wordpress

Добавление произвольных типов записей в wordpress

Нажимаем на кнопку «Добавить новый индивидуальный тип публикации». Заполняем поля. Сохраняем. Главное заполнить первый блок «Название и описание». Далее можете заполнить поля и отметить галочки по желанию. В принципе по ним все понятно из названия пунктов. Вот пример как я заполнял поля для создания раздела «Фильмы».

Добавление произвольных типов записей в wordpress

Добавление произвольных типов записей в wordpress

Третье. Заполняем новый созданный раздел

Теперь, если вы все сделали правильно, слева в меню появится раздел «Фильмы». На скриншоте видно уже заполненный раздел «Фильмы» на моем тестовом сайте.

Добавление произвольных типов записей в wordpress

Добавление произвольных типов записей в wordpress

Все что касается добавления произвольных типов записей в админке WordPress мы уже сделали. Следующий шаг → Вывод произвольных типов постов, как это сделать смотрите в уроке Вывод произвольных типов записей в WordPress сайте.

 

Этот урок является частью цикла уроков, посвященных произвольным типам записей в WordPress. Обязательно посмотрите все уроки из данного цикла.

Произвольные типы записей и поля:

  1. Добавление произвольных типов записей в WordPress
  2. Вывод произвольных типов записей в WordPress
  3. Добавление произвольных полей к записям в WordPress
  4. Вывод произвольных полей в записях WordPress
  • MithrandirRu

    Юрий, спасибо за статью. Мы с коллегой давненько ищем cms, в котором можно было бы быстро собирать сайты с индивидуальными типами контента, к которым была бы возможность привязывать индивидуальные поля, а так же налаживать связи типа BELONGS_TO и HAS_MANY. Многие перепробовали: ImageCMS, Joomla, Diafan, InstantCMS, вот дошли до WP. В связи с этим хотел бы вам задать пару профессиональных вопросов:

    — На вашем скриншоте в меню плагина Types я вижу разделы «индивидуальные поля», «поля пользователя». Подскажите пожалуйста, почему для создания своих полей в последующих уроках вы использовали другой плагин (ACF)?

    — Не подскажете ли какого-то плагина, позволяющего пользователям добавлять из фронтенда определённые типы контента, заранее созданные в админке? Допустим, это могли бы быть отзывы к фильмам.

    Ещё раз спасибо!

    • Добрый день. Можно использовать Types, можно ACF. В ACF мне больше нравится визуальный дизайн в админ части — поэтому рассматривал его. Зато у TYPES можно создавать множественные поля, у ACF этого или нет или есть в платной версии. Также у TYPES по-моему есть типы полей которых нет у ACF.

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

      • Разве ACF позволяет создавать пользовательские ТИПЫ записей? Дополнительные поля к записям, страницам — да, но с типами записей я что-то не нашел.

    • Зелим

      Вам Drupal нужен. На все пункты ответ положителен

      • MithrandirRu

        Спасибо за рекомендацию, Drupal почему-то мы ещё не пробовали. Попробуем изучить!

  • Artem Sotnikov

    Создал новый тип записи по примеру, только вот на сайте они все равно не выводятся, а выводятся только материалы из «Записи».

    • Все верно. Теперь необходимо сделать вывод этого вида записей в шаблоне, используйте урок → http://rightblog.ru/1946

      • Было бы неплохо это сразу указать в начали статьи, а то у каждого третьего эти вопросы будут возникать.

        • Да, надо оформить некое оглавление у всех постов из этой серии. Сделаю на досуге.

  • Вадим

    Юрий, день добрый.
    Подскажите пожалуйста, плагин «Types», создал раздел «promo», внутри некие страницы.
    Вопрос, как отредактировать шаблон «promo»? Хочу там настроить произвольный вывод записей и т.п….
    Заранее спасибо.

    • Добрый день. Вы использовали только плагин Types, или совместно с плагином Views?

      Если только плагин Types — то вероятно и шаблон вы создавали сами. Как создать самому шаблон для вывода произвольных типов записей я писал вот здесь rightblog.ru/1946

      • Вадим

        Использую только Types.
        Конкретно для «promo» шаблон не делал.
        Нажал создать страницу, ввел название в ед. и множ. числе и название страницы(promo). Создать.
        При заходе на сайт «домен.ру/promo/», судя по всему он использует index.php как шаблон.
        И вот в этом вопрос, как и где указать ему «мой шаблон»…? Не могу найти где отредактировать страницу «промо», как то так)
        для вложенных страниц «сайт.ру/промо/страница1», используется page.php, тоесть все как надо

        ЗЫ создание страницы «promo» в страницах не помогло, игнорирует ее

        • Все верно. Чтобы задать свой шаблон используйте инструкцию — rightblog.ru/1946 Там я описал как создать и соответственно отредактировать шаблон вывода кастомных материалов — так как вам нужно.

          Также рекомендую смотреть в сторону иерархии шаблонов в wordpress http://goo.gl/GfQRWz вот картинка: http://codex.wordpress.org/File:Template_Hierarchy.png

          • Вадим

            Читал вашу статью про вывод и делал по ней тестовую страничку.

            Проблема в другом (может это частный случай или я просто криворукий), если в Types назвать страницу «promo», то потом при создание страницы в «страницах»(ТТ тафталогия…) с названием «promo», wp ее игнорирует. Если названия страниц в types и «страницах» будет отличатся, то все в порядке. Но тогда чисто эстетически не суразно будет, заходишь на сайте в «promo», кликаешь на акцию, открывается(к примеру) promo1/akciya/. Помогите пожалуйста разобраться где я косячу( или может неправильно задаю вопрос…

          • Понял задачу. Сходу не подскажу как ее решить. Можно в принципе назвать страницу promo_page, а типы записей — promo. Вообще если не создавать staticpage для отображения кастомных типов записей, то они будут отображаться по иерархии шаблонов wordpress. Получается можно в иерархии определить по какому шаблону они отображаются, и создать свой шаблон — например category-$slug.php — в общем думаю мысль понятна. Я бы копал в этом направлении.

  • Добрый день. Подскажите, как вставить в новый тип записей миниатюру?

    • Добрый день. Смотрите Второй шаг в этой статье, 2-й скриншот. Увидите что на нем в блоке «Вывести разделы на дисплей» есть пункт для выбора миниатюры — «Миниатюра». Просто оставьте его включенным и записи данного типа буду содержать в себе миниатюру.

  • Добрый день. Подскажите, как использовать свой шаблон страницы для данного типа записей?

  • Добрый день. Плодотворно пользуюсь данным плагином, но возникла следующая задача: как включить данный тип записей в вывод похожих записей по тегам к странице? Привожу пример: есть свой тип записи — Хирург НН с тегом «хирургия», и есть страница/статья с тегом «хирургия», как реализовать вывод в статье/странице записьи по тегу?

    • Для этого надо изучить запросы в wordpress, и создавать свой запрос который будет подтягивать необходимые вам записи. Пока такого урока на моем блоге нет.

  • Филандер

    Добрый день! Спасибо за статью! Скажите а если мне не нужно создавать новый тип записей, а модифицировать текущий — простые записи…. нужно много лишнего убрать, так как записи делают зарегистрированные пользователи…

    • Добрый день. Вам нужно настроить кастомные поля в записях?

      • Филандер

        при создании простой записи (post) есть масса разных полей, эти все поля предоставляет навороченный шаблон, + плагины, например SEO by YAST, вот эти все левые поля, я хочу скрыть…. чтобы просто пользователь просто опубликовал запись, доступно было теги, заголовок, текст с редактором, добавить картинку и все…. мне подсказали это в самом коде нужно по условию если текущий пользователь != рольАдмин, значит скрываем определенные поля.

        • Да, получается это уже в коде надо условия писать и скрывать ненужное.

  • SiD “it-quakers”

    Юрий, здравствуйте. У меня вопрос по поводу аттрибутов для кастомной типа записи.
    Как для новой типа записи добавить в аттрибуты выбор шаблона?
    На стандартных выводится в правом блоке, а вот на созданном почему-то такого выбора нет.

  • Картинки не отображаются)

    • По картинкам — сейчас буду фиксить их на всех постах. В один момент когда изменил размер миниатюр и сделал rebuild thumbnails, произошла вот такая неприятная вещь — картинки в постах послетали.

      Насчет рубрик и меток для кастомных типов записей — для этого необходимо для созданного типа записей дополнительно создать таксономии. Это можно сделать в том же плагине где создавали тип записей.

  • Александра

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

    • Добрый день. Для вывода произвольных полей посмотрите статью/урок на эту тему:
      Вывод произвольных полей ACF в шаблонах WordPress http://rightblog.ru/2038

  • Looler

    Юрий, здравствуйте!

    У меня одна довольно таки большая проблема, которую ну никак не получается решить уже второй день.

    1 — Создаю раздел «Врачи»,
    2 — у него таксономия «Профессии»
    3 — в профессии перечисление: «Хирург», «Аллерголог», «Травматолог» и т.д.
    пробовал очень много вариантов но никак не получается так, чтобы:
    1 — пост выводился с такой ссылкой — site.com/vrachi/travmatologi/ivanov-ivan-ivanovich/
    2 — список постов выводился при ссылке — site.com/vrachi/travmatolog/
    3 — список постов выводился при ссылке — site.com/vrachi/
    Если работает вариант 1, не работает вариант 2 или 3 или 2 и 3
    Если работает вариант 2 или 3, не работает вывод поста.

    Попробовал сделать так:
    1 -Создаю раздел Врачи, но не вывожу его в УРЛ,
    2 — в таксономии создаю Врачи и потом как его дочерние «Хирург», «Аллерголог», «Травматолог» и т.д.
    Но проблемы те же что и в первом варианте.

    Пробовал и другие манипуляции с плагином — Custom Post Type Permalinks и без него для настройки УРЛ, но никак не получается. Даже пробовал создавать Произвольные типы записей вручную, проблемы остаются те же ((((

    Можете подсказать хот что нибудь?

    Заранее Спасибо!

    • Такую кастомизацию со ссылками и адресами не делал, ничего подсказать не могу.

      • Looler

        Тогда такой вопрос, не будет ли проблемой в плане SEO для ПС, если у списка врачей будет адрес — site.com/vrachi/ и site.com/vrachi/travmatolog/, а у станиц самих врачей другая, например site.com/vrachi/professii/ivanov ????

        • То что вы описываете это конечно идеальный вариант. Но помехой для SEO отсутствие такой структуры — не будет.

          • Looler

            Спасибо!

  • dimagyzeev

    Все бы ничего, но у меня меню в админке не появляется. Свежий сайт для тестов, только установил рекомендуемый плагин и все

  • Вася Кириченко

    А где взять русскую версию плагина?

    • Не в курсе существует ли она в природе. Возможно есть русскоязычные аналоги, поищите.

  • Игорь

    Подскажите, пожалуйста, а как добавить произвольные типы записей на
    главную страницу, в режиме “отображать на главной последние записи”?

  • Baloo

    Здравствуйте! Благодарю за хорошую статью. Возник такой
    вопрос – Как убрать поле «Введите заголовок здесь» и блок вставки?