n-wp.ru — блог о WordPress

Все таксономии и записи в них на одной странице

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

Название таксономии 1
Название товара 1, фотка, описание, инфа из дополнительных полей.
Название товара 2, фотка, описание, инфа из дополнительных полей.
ит д.

Название таксономии 2
Название товара 1, фотка, описание, инфа из дополнительных полей.
Название товара 2, фотка, описание, инфа из дополнительных полей.
ит д.

Возможно ли это?

17 комментариев

  • Насколько я понимаю,
    название товара — это название поста,
    фотка — это миниатюра поста,
    описание — это цитата (excerpt) поста,
    инфа из дополнительных полей — это вывод текста из произвольного поля поста.

    Какую таксономию вы имеете ввиду? Любую? Пользовательскую? Теги? Категории?

    Судя по вашему описанию, все сводится к выводу всех постов (название + миниатюра + цитата + содержимое произвольного поля) с группировкой по таксономии.

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

  • Пример вывода
    вот пример вывода. Тоесть, выводится название таксономии, название вложенной таксономии и посты в ней.

    • Сколько всего этих категорий? Их число ограничено или нет? Планируется ли добавлять на страницу новые?

  • около 20 подкатегорий в 5-ти категориях. Планируется добавлять в них только товары. Интересно как такое сделать на WP.

    • Вот как-то так:

      Примечания:
      1) Во второй и десятой строках нужно поменять слово category на имя своей кастомной таксономии.
      2) Несмотря на внешнюю легкость кода, он производит довольно-таки большую нагрузку. К сожалению, в WP нет встроенного механизма сортировки записей по категориям, в таком случае код был бы легче, но что есть, то есть, и других вариантов я придумать не смог.
      3) Из второго пункта следует третий: настоятельно советую установить какой-нибудь плагин кэширования.
      4) У кода есть следующие недостатки:
      а) Названия верхних категорий выводятся, даже если у них нет дочерних категорий и в них нет постов (устранимо)
      б) Не выводятся записи из родительских категорий (устранимо)
      5) Код я протестировал — он работает, как надо. Единственное, что протестировать не могу, так это тамбнейлы, но, вроде бы, должно работать.

      • Отлично! Спасибо!! Затестил данный код: итак, если использовать со стандартными рубриками, то отображается все правильно. Если прописать имя кастомной таксономии, то отображаются только названия родительских рубрик, а ни названий дочерних, ни постов нет :(. Кстати, выводятся только те рубрики, в которых есть или записи, или вложенные рубрики с записями…

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

        • Подновил: теперь пустые категории не показываются. В случае, если в родительской категории есть посты — они показываются. Во второй строке подставьте свою таксономию.

          • да, конечно название таксономии менял в двух местах и в этом новом примере — Опять же — дочерние пункты меню невыводятся.
            Вводил имя таксономии — в моём случае это «products». Эта таксономия включает в себя две родительские категории «Для детей» и «Для взрослых» которые имею свои подкатегории. Посты в этих категориях берутся из произвольных записей «Товары».

            Мы можем по icq или skype пообщаться?

  • Вот итоговый рабочий код:

    За помощь огромное спасибо Apathetic!

    • Чего-то ты какой-то старый вариант опубликовал. Финальный выглядит так:

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