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

9
1283

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

<?php get_template_part(‘loop’); ?> вызывает файл loop.php , который будучи в цикле отображает запись. Примерное содержимое файла:

Создаем шаблон для нового типа записи

Для создания пользовательского шаблона, необходимо создать новый файл в директории с темой. Данный файл представляет из себя шаблон WordPress страницы, который должен иметь название следующего типа: page-[название_типа_записи].php . Мой тип записи называется red_book, поэтому я называю файл page-red_book.php. Содержимое файла:

Как вы могли заметить, файл является аналогом стандартного файла index.php, где расположены вызовы шаблонизатора WordPress, такие как: get_header(), get_footer() и т.д. Отличие только в цикле, где мы указываем требуемый тип — array( 'post_type' => array('red_book')) .

Затем создаем файл цикла — loop-[название_типа_записи].php , в котором будет следующее:

Теперь заходим в WordPress и создаем страницу, указав в атрибутах страницы созданный нами шаблон:

Опубликуйте страницу и перейдите по адресу, который расположен ниже заголовка Постоянная ссылка: .

Если все сделано правильно, то Вы увидите обычную страницу. Теперь достаточно создать новую запись и она там появиться.

Вывод дополнительных полей в новом типе записи

Для вывода данных из дополнительных полей, которые Вы создали, почитайте статью: Вывод дополнительных полей на сайт. В нашем случае, вывод данных будет происходить в файле loop-red_book.php .

Если Вам нужная постраничная навигация (пагинация) для Ваших записей, читайте.

Спасибо за внимание!

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

  1. Все работает как надо, но встал вопрос — как вывести пагинацию для своей таксономии?

    • На забудьте указать свой тип записи в &post_type=red’


      'query('showposts=6&post_type=red'.'&paged='.$paged);

      while ($wp_query->have_posts()) : $wp_query->the_post();
      ?>

      '

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

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

      Можно ли здесь применить пагинацию с помощью функции my_pagenavi ? и как это сделать?

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

  2. Классно, спасибо за информацию. А как сделать пользовательское заполнение своего типа записей? Чтобы человек, зашедший на сайт, мог зарегистрироваться и добавить в данном случае записи в раздел Красная книга (без админки, через интерфейс сайта), при этом в пользовательском типе фиксировалось, кто добавил эту запись.

  3. Здравствуйте! Огромное спасибо за такой подробный цикл статей на эту тему!
    Я пытаюсь создать по ним кастомную запись где есть только Название, превью и свое поле УРЛ.
    Таксономия у обычных записей и моих кастомных общая (рубрики).
    Выводить мне бы их надо вперемешку — обычные и кастомные, но с учетом категории. Но по умолчанию файл category.php не выводит мои кастомные записи. А если я использую код из этой статьи
    $loop = new WP_Query( array(
    ‘post_type’ => array(‘post’, ‘red_book’)
    тогда выводит ВСЕ существующие записи и кастомные и обычные подряд без какой-либо каталогизации. Т.е. я перехожу по разным рубрикам сайта и вижу везде одинаковый набор записей.
    Подскажите, такая реализация вообще возможна? Может там как-то ручками надо дописать условие что выводить зависи из текущей категории, вот тут где-то:
    have_posts() ): ?>
    have_posts() ) : $loop->the_post(); ?>
    хотя, это вроде вордпресс же сам для обычных записей знает…
    Или я вообще не в том направлении мыслю?

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

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