Вывести свой тип постов

Содержание
  1. Создаем кастомный тип записи (Custom Post Type) с кастомными категориями (Custom Taxonomy)
  2. Вариант 1 — самый правильный. Выводим записи в таксономии так же как и в обычной категории.
  3. Вариант 2 — если нет кастомных таксономий, то можно просто получить все кастомные записи в виде Архива
  4. Вариант 3. Просто выводим все кастомные записи Articles на странице с заданным шаблоном
  5. Комментарии (21) к “Создаем кастомный тип записи (Custom Post Type) с кастомными категориями (Custom Taxonomy)”
  6. Denis Creative
  7. Александр
  8. Александр
  9. Denis Creative
  10. Роман
  11. psinka
  12. Слава
  13. Denis Creative
  14. Aндрей
  15. Aндрей
  16. Denis Creative
  17. Игорь
  18. Андрей
  19. Андрей
  20. Андрей
  21. Андрей
  22. Андрей
  23. Игорь
  24. Denis Creative
  25. Как добавить и вывести новые кастомные типы записей в WordPress.
  26. Дефолтные типы постов в WordPress
  27. Как создать новый произвольный тип записей в WordPress?
  28. С использованием плагинов
  29. Создание произвольного типа записей без использования плагинов
  30. Обзор способов вывода произвольных типов записей в WordPress
  31. Как вывести свой тип постов на главной странице сайта
  32. Цикл для вывода своих типов постов в любом месте сайта
  33. Вывод постов из custom post type в виджете
  34. Выводим записи с помощью стандартного меню движка
  35. Шаблон для списка постов произвольного типа записи WordPress
  36. Как привязать произвольные поля?
  37. Подключаем Gutenberg к пользовательским типам записей

Создаем кастомный тип записи (Custom Post Type) с кастомными категориями (Custom Taxonomy)

Создаем кастомный тип записи (Custom Post Type) Articles с кастомными категориями (Custom Taxonomy) Articles Category.

[vc_row][vc_column][vc_message color=»alert-warning» message_box_color=»alert-warning» icon_type=»pixelicons» icon_pixelicons=»vc_pixel_icon vc_pixel_icon-alert»]Это будет наиболее полезная статья по Custom Post Type[/vc_message][/vc_column][/vc_row]

В моем случае все стандартные записи — это Товары, поэтому Статьи выведем через кастомные записи.

В файле функций functions.php регистрируем кастомный тип записи Articles:

Читайте также:  Как вывести блох дома народными средствами быстро

Если вы хотите, чтобы в кастомных постах выводились стандартные категории, тогда привяжите их к таксономии Категорий:

Если для кастомных постов вы создаете еще и кастомные таксономии, то связывать их надо с созданными таксономиями, если брать пример ниже, то это будут articles_category

Затем для кастомного типа записи Articles регистрируем таксономии ‘Article Category’, чтобы разные записи могли принадлежать разным категориям.

Для кастомной таксономии можно изменить слаг на более красивый, чтобы он не был articles_category , но нужно учесть, чтобы таких слдагов больше не было на других страницах или постах, иначе будут проблемы:

[vc_row][vc_column][vc_message color=»alert-warning» message_box_color=»alert-warning» icon_type=»pixelicons» icon_pixelicons=»vc_pixel_icon vc_pixel_icon-alert»]При изменении слагов необходимо обновить настройки «Постоянных ссылок» в админке, иначе будете получать 404 ошибку вместо нужной страницы.[/vc_message][/vc_column][/vc_row]

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

За внешний вид кастомной записи отвечает файл single.php , но чтобы изменить вид кастомной записи можно создать файл single-.php — в моем случае будет single-articles.php со своим содержимым.

Теперь нужно вывести кастомные записи на странице. По умолчанию за отображение архива кастомных записей отвечает файл index.php . Но можно создать файл, который будет отвечать за вывод кастомных записей в своей таксономии.

Вариант 1 — самый правильный. Выводим записи в таксономии так же как и в обычной категории.

Для этого создаем файл taxonomy-.php — в моем случае будет taxonomy-articles_category.php и в нем выводим обычный цикл, как и для стандартных записей в категории:

В файле tax-item.php выводим данные, которые нам нужно получить из каждой записи, например, заголовок, ссылку на запись, миниатюру и excerpt.

В файле pagination.php выводим пагинацию вот такого формата.

Цикл не изменяем, пагинация отлично работает. Это самый оптимальный вариант для отображения Кастомных Таксономий.

Вариант 2 — если нет кастомных таксономий, то можно просто получить все кастомные записи в виде Архива

Для этого в шаблоне создаем файл archive-.php — в моем случае будет archive-articles.php , в котором точно так же как и в таксономии выводим обычный цикл, только вместо заголовка Таксономии выводим имя кастомного типа записи :

При этом варианте, если не создана страница архива для кастомной записи, тогда получить список всех кастомных записей можно по прямой ссылке BLOG_URL?post_type= или в моем случае http://site.com/articles/ .

Вариант 3. Просто выводим все кастомные записи Articles на странице с заданным шаблоном

get_template_part( ‘include/tax-item’ ); — в файле tax-item.php я вывожу содержимое записи, которое нужно мне для отображения записей внутри цикла (заголовок, миниатюру, дату, цитату и т.д.)

Этот вариант выводит все записи Articles на странице, не зависимо от таксономий (категорий).

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

При этом, если вы используете плагин Yoast SEO и используете его хлебные крошки:

Тогда при выборе в настройках плагина таксономии «Articles Category» в «Taxonomy to show in breadcrumbs for post types», в хлебных крошках вы получите ссылку на категорию, к которой принадлежит Новость, при других вариантах вывода кастомных записей это не получалось сделать.

Рекомендую к прочтению:

Комментарии (21) к “Создаем кастомный тип записи (Custom Post Type) с кастомными категориями (Custom Taxonomy)”

Перед собой ставил задачу создания каталога, поэтому ковырял варез — Gravity Forms. К сожалению Gravity Forms не дает возможности публиковать контент в пользовательских типах, только в типах данных post. Если кто поможет решить проблему — буду рад!

Denis Creative

Я не совсем понял, в чем была суть задачи и какая цель…
Gravity Forms — это, вроде, обычный плагин форм как и Contact Form 7, может для публикации контента лучше подойдет плагин Frontend Post WordPress Plugin?

Александр

Я создаю без кастомной таксономии, но всё равно шаблон archive-articles.php не цепляется, а выводится посредством index.php
Может еще что-то менять надо?

Александр

иначе не работает шаблон архивов

Denis Creative

Роман

Подскажите пожалуйста, можно ли сделать так, чтобы эти кастомные поля имели в конце префикс .html?

psinka

долго мучался, несколько дней, создавал архив произвольных записей, но 404 ошибка выдавала при переходе…
оказалось, что в плагине, через который создал типы записей, напротив пункта Archive был параметр False…
так что внимательнее!

Слава

Привет, такой вопрос. Если я хочу вывести все записи произвольного типа, но помимо них на странице вывода должен присутствовать другой контент, который должен редактироваться с админки (именно для этой страницы), как это лучше сделать? Если через архив — тогда нет места для редактирования контента, но все в порядке и с урлами и с хлебными крошками. Если через шаблон страницы — все отлично с контентом: все редактируется на одной странице, но возникает куча проблем: кривые крошки, перенаправления, дубли страниц и каша с урлами. Получается так или иначе нужно что-то костылять. Каким образом лучше и правильнее все это сделать? (например когда есть несколько типов записи со своми таксономиями). Буду благодарен за ответ.

Denis Creative

Если я правильно понял вопрос, то можно ведь в таксономии вывести description с помощью кода и в нем создать контент, который можно будет редактировать.

Aндрей

Здравствуйте. Как вывести записи (произвольный тип), которые относятся определенной категории? (При клике на категорию вывести список записей этой категории).

Aндрей

Не категории а подкатегории.

Denis Creative

Использовать код из Варианта 1

Игорь

Чет не выводится — ка в списке категорий , так и сама сингле запись?

Андрей

Здравствуйте. Вывел произвольные рубрики первым способом —
Но теперь при переходе в произвольную запись — хлебные крошки не выводят название этой рубрики (таксономии).
Breadcrumb NavXT (рубрика-шаблон):
%htitle%

Андрей

Андрей

Андрей

Почему на странице таксономии крошки отображают название (этой произвольной рубрики), а при переходе на произвольную запись — название рубрики в крошках отсутствует?

Андрей

Проблему решил (в настройках плагина хлебных крошек).

Игорь

Сделал таксономию articles_category и в ее добовляю записи — но на сайте НЕ выводит — «Страница ненайдена»?

Denis Creative

Много вариантов, проверяйте каждый этап создания таксономий.

Источник

Как добавить и вывести новые кастомные типы записей в WordPress.

Если вы хотя бы раз создавали сайт на WordPress, то вы точно работали с разными типами записей, такими как «Страницы» и «Записи». На практике, часто возникает потребность в создании кастомного типа записи для вывода определенного типа информации. Произвольные типы записей в WordPress служат для сегментации и удобной работы с различными форматами контента на сайте.

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

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

Дефолтные типы постов в WordPress

По-умолчанию в WordPress есть несколько встроенных типов записей.

  • Страницы (page). Используются для создания различных страниц сайта с возможностью подключения разных шаблонов, сортировки по порядку, при включении постоянных ссылок урл страниц будет иметь вид: https://site.com/your-page. Также, страницы имеют функцию вложенности, а урл вложенных страниц содержит и родительский урл, что дает возможность формировать грамотную структуру сайта. По дефолту шаблон для страниц в теме это – page.php.
  • Записи (post). Стандартный тип поста, который используется для блога. Шаблон для вывода записи в теме — single.php.
  • Вложения (attachment). Сюда входя такие типы записей как изображения и файлы со своими параметрами, например, размер, title и другое.
  • Редакции (revision). Это черновики, которые формируются после того, как вы нажимаете кнопку «Сохранить» при редактировании записи. Они дают возможность восстановить сохраненную копию в различных временных интервалах.
  • Элементы меню (nav_menu_item). Тип записей, который сохраняет в себе информацию об элементах меню.

Как видите, даже встроенные типы записей в данную CMS, имеют различное назначение, свою структуру, поля и выполняют каждый свою роль для управления контентом на сайте.

Как создать новый произвольный тип записей в WordPress?

На практике можно использовать два подхода к добавлению новых типов постов на ваш сайт.

  1. С помощью установки плагинов.
  2. Вручную, путем использования функций движка.

Давайте разберем каждый из этих методик отдельно.

С использованием плагинов

Этот метод подойдет для тех, кто не хочет лезть в файлы темы, а настроить и добавить кастомный тип записи из админки WordPress. Наибольшую популярность среди вебмастеров для выполнения этой задачи получил плагин — Custom Post Type UI.

Для его установки переходим в раздел «Плагины» — «Добавить новый». В строке поиска ищем по названию плагина, жмем установить и активировать. После этого в сайдбаре появиться пункт меню «CPT UI».

Для создания нового типа записей переходим в раздел «CPT UI» — «Add/Edit Post Types».

В текстовом поле «Post Type Slug» указываем название, которое должно состоять из латинских букв и цифр. Конкретно в нашем примере мы укажем значение «books».

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

В поле «Singular Label», указываем название в единственной форме, например «Книга».

Также, можно вставить описание, в поле «Post Type Description», но это не обязательное поле для ввода.

После ввода данных, нажимаем кнопку «Add Post Type». На этом все, ваш пользовательский тип записей создан.

Еще один момент, остальные поля во вкладке «Additional Labels» отвечают за вывод надписей при редактировании постов и рубрик этого типа записи в админке.

В репозитории WordPress есть и другие плагины, которые позволяют добавлять новые типы постов, например: WCK Custom Post Types and Custom Fields Creator, Pods, Custom Post Type Maker и другие.

Создание произвольного типа записей без использования плагинов

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

Код для добавления пользовательского типа записей нужно размещать в файле functions.php вашей темы на WordPress. Можно напрямую вставить код внизу файла, либо же подключить туда файл, например, из папки inc, это уже как вам удобно.

За определение нового типа записей отвечает функция register_post_type(). В нее передают два основных параметра: название и массив $args, в котором задают основные настройки для custom post type.

Итак, сделав бекап файла functions.php, добавьте в него следующий код.

Это базовое подключение типа записей с минимальным количеством опций.

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

Важный момент касательно названия custom post type, не используйте следующие имена: post, page, attachment, revision, nav_menu_item, action, order, theme. Эти слова зарезервированы движком и если вы будете добавлять код с именем из этого списка, ничего работать не будет.

Ниже приведен пример кода с расширенными настройками.

В массиве $args используются следующие опции.

  • labels – массив array, который содержит текстовые переменные для вывода информации в админке WordPress, при редактировании пользовательского типа записей. Например, вместо «Добавить новую», вы можете указать «Добавить новую книгу».
  • description – короткое описание, которое четко описывает какой тип постов в ней размещать.
  • public – видно ли тип записи для авторов и посетителей, значение по умолчанию FALSE, что означает, что он не появляется даже в панели администратора.
  • exclude_from_search – определяет, будут ли записи данного типа исключены из поиска на сайте.
  • publicly_queryable – можно ли получить запись этого типа с помощью URL-адреса, например, https://www.site.com ?post_type=, или в расширенном использовании через функцию query_posts(). Значение по умолчанию true.
  • show_ui – подключаются ли ссылки меню и редактор сообщений в панели управления администратора. Значение по умолчанию – екгу;
  • show_in_nav_menus – будут ли записи этого типа добавляться в меню навигации, созданные на странице Внешний вид ->Меню, значение по умолчанию – true.
  • show_in_menu – отображается ли ссылка типа записи в навигации административной панели. FALSE – скрывает ссылку. TRUE – добавляет ссылку как новую ссылку верхнего уровня. Ввод строки позволяет разместить ссылку внутри существующей ссылки верхнего уровня, то есть ввести параметры options-general.php располагает её под ссылкой Настройки.
  • show_in_admin_bar – сделать этот тип доступным из админ бара.
  • hierarchical – может ли запись быть назначена к родительской записи, если значение TRUE, то массив $supports должен содержать параметр «page-attributes»
  • supports – выборочно включает функции записи такие как: изображения, фрагменты текста, произвольные поля и др. Если вместо массива указать false, то никакие вспомогательные поля выведены не будут, в том числе и по умолчанию.
  • taxonomies – массив таксономий, который может быть применён к публикациям этого типа, таксономии должны быть уже зарегистрированными – отсюда они не создаются!
  • has_archive – включить поддержку страниц архивов для этого типа записей (например, url записи выглядит так: site.com/type/post_name, тогда url архива будет такой: site.ru/type).
  • query_var – TRUE или FALSE определяет, может ли запись быть доступна по url: /?=.
  • menu_position. Позиция, где должно расположиться меню нового типа записи в числовом эквиваленте. Например, 4-9 — под меню «Записи», 20-24 — под меню «Страницы», или же 80-99 — под меню «Параметры».
  • can_export. Добавляет возможность экспорта этого типа записей.
  • Строка, которая будет маркером для установки прав для этого типа записи. Встроенные маркеры это: post и page.

Полный список опций вы можете посмотреть на странице WordPress Codex для функции: register_post_type().

Обзор способов вывода произвольных типов записей в WordPress

Мы уже разобрались, как добавлять и работать с кастомными типами записей в админке, теперь давайте рассмотрим способы вывода этих записей на фронтенде.

Как вывести свой тип постов на главной странице сайта

По дефолту все пользовательские типы записей не выводятся на главной странице. Если у вас стоит задача вывести список таких постов на главную, то можете использовать приведенные ниже код, добавив его в файл functions.php вашей темы.

В этом коде $query->set() принимает два параметра:

  • приоритет, который нужно изменить, в данном примере post_type.
  • массив, который нужно передать как значение для post_type. Как видите в коде указано значение для массива «post», если вам нужно вывести только ваш тип записей, то «post» можно удалить.

В примере мы сделали вывод стандартных постов и записей типа books. Название типа записей стоит указывать то же, что вы задавали при регистрации кастомного типа.

Цикл для вывода своих типов постов в любом месте сайта

Для этих целей используется класс WP_Query и цикл WordPress.

Таким образом, вы сможете вывести записи данного типа, например, в отдельном блоке на главной или же в качестве рекомендуемого контента на странице поста.

Вывод постов из custom post type в виджете

В WordPress есть стандартный виджет, который позволяет выводить записи, но в нем отсутствует функционал по выбору нужного нам типа записей. В качестве альтернативы вы можете установить и активировать плагин – «Ultimate Posts Widget». Далее перейти в меню «Внешний вид» — «Виджеты» и перетащить в область виджета блок «Ultimate Posts».

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

Выводим записи с помощью стандартного меню движка

Для этого переходим в раздел админки «Внешний вид» — «Меню». Слева выберите пункт меню «Произвольные ссылки» и укажите название меню, например «Обзоры книг» и slug, который вы задавали при регистрации типа записи, в наше случае это «books», например http://site.com/books.

Тут же вы можете вывести отдельную запись из своего кастомного типа постов, выбрав вкладку «Книги».

Шаблон для списка постов произвольного типа записи WordPress

Перейдя в раздел /books, вы увидите список постов, а для их вывода WordPress использует шаблон archive.php. Для того, чтобы изменить этот шаблон на свой и сделать другую верстку страниц или же добавить дополнительную информацию к карточкам книг нужно в папке темы создать файл — archive-books.php. Вместо books вы указываете slug своего типа записей. После этого копируете содержимое archive.php в файл archive-books.php и далее уже редактируете шаблон под свои задачи.

Аналогично можно создать и шаблон для отдельной записи кастомного типа. Для этого создайте файл single-books.php (вместо books название вашего типа) в папке вашей темы. Скопируйте туда содержимое файла single.php и после этого можете редактировать шаблон, так как вам нужно.

Как привязать произвольные поля?

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

Додавать произвольные поля можно с помощью стандартного функционала WordPress.

Для того чтобы их вывести на сайте используется следующий код.

Тут два примера. Первый использованием функции the_meta(). Которая выведет все указанные для поста произвольные поля в списке ul. Второй get_post_meta() – получает значения, и при необходимости может вывести отдельный тип поля.

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

Удобнее для этих целей использовать плагин — Advanced Custom Fields. Он в свою очередь позволяет работать с редактором Gutenberg, что также немаловажно.

Устанавливаете и активируете плагин. Переходите в меню «Группы полей» — «Добавить». Заполняете и добавляете свои поля к группе.

Выводить поля можно с помощью конструкций.

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

Подключаем Gutenberg к пользовательским типам записей

С версии WordPress 5.0 запущен новый визуальный редактор Gutenberg. Но создавая вручную новый тип кастомных записей при редактировании их, вы будете видеть старый редактор — Classic Editor.

Чтобы подключить Gutenberg вам, при создании кастомного типа постов стоит прописать новый параметр.

После чего можно идти в админку и проверять изменения.

Пример кода с включением редактора Gutenberg.

На этом все. Мы рассмотрели основные моменты, которые вам нужно знать при работе с произвольными типами записей в данной CMS. Далее только практика и изучение всех дополнительных возможностей этого функционала в WordPress.

Источник

Оцените статью