Работа с таксономиями
Нужна помощь с пояснением и направлением, суть работы такова:
-
Есть произвольный тип записи "Продукция", у него зарегал таксономию "Категории товаров".
-
У каждой из категорий сделал подкатегорию.
-
Записям указал необходимые подкатегории.
-
Необходимо чтобы при выборе в меню - родительской категории, открывалась страница с содержащимися на ней её подкатегориями, а у этих подкатегории были свои записи (миниатюры).
- При нажатии на миниатюру должен быть переход на шаблон страницы этой продукции.
Как это реализовать? Какая должна быть иерархия шаблонов?
локуги вывода то ли ПОДКАТЕГОРИЙ то ли ЗАПИСЕЙ категории - нужно писать в файле, который выводит эту категорию. Н-р, taxonomy-service_cat.php
service_cat - это у меня категория услуг.
Что то понимаю, но всё же..
Я так понимаю что не получится для подкатегорий сделать единый шаблон?
Нужно для каждой делать свой шаблон?
скиньте код файла и укажите название файла, в котором выводите категории
или сам файл
это верно
Логика будет такая, если напримере записей:
в файле
category.php - будут выводиться И категории и ЗАПИСИ (можно вынести код в отдельные файлы, но логика их подключ все равно будет в category.php)
WP для категорий и подкатегорий подключает ОДИН и тот же файл: category.php
НО вы можете это изменить кодом: подключать другой файл, если эта категория содержит ПОДКАТЕГОРИИ и если у нее нет подкатегорий - то подключать третий файл.
Надеюсь логику уловили.
вот файл taxonomy.php в нём вывод и подкатегорий и их записей
Сейчас записи вообще не выводятся, там появляется условие из цикла "Записей нет"
нет там вывода записей категорий. Там вывод записей той категории, в которой сейчас находитесь да и еще в цикле категорий.
<?php get_header() ?> <main class="main"> <div class="breadcrums"> <div class="container"> <ul class="breadcrums__list"> <li class="breadcrums__item"> <a class="breadcrums__link" href="#">Home</a> </li> <li class="breadcrums__item"> <a class="breadcrums__link" href="#">About</a> </li> </ul> </div> </div> <section class="new-collection"> <div class="container-fluid"> <?php $taxonomy = 'category-product'; $term = get_queried_object(); $children = get_terms( $term->taxonomy, array( 'parent' => $term->term_id, 'hide_empty' => false ) ); // print_r ($term); if ( $children ) { foreach ( $children as $subcat ) : ?> <div class="cont-wrapper"> <h3 class="new-collection__title"> <?php echo $subcat->name ?> </h3> <p class="new-collection__text"> <?php echo $subcat->description ?> </p> <?php $term_posts = get_posts( [ 'post_type' => 'product', 'tax_query' => [ [ 'taxonomy' => $taxonomy, 'terms' => [ $subcat->term_id ] ] ] ] ); ?> <div class="collection"> <?php if ( $term_posts ) { foreach ( $term_posts as $post ) { setup_postdata( $post ); ?> <a class="collection__item" href="#"> <?php the_post_thumbnail( 'full', array( 'class' => 'collection__images' ) ); ?> <div class="collection__info"> <h6 class="collection__info-title"> <?php get_the_title(); ?> </h6> <p class="collection__info-text"> <?php get_the_content(); ?> </p> </div> </a> <?php } wp_reset_postdata(); ?> <?php } else { ?> Записей нет в подкатегориях <?php } ?> </div> </div> <?php endforeach; } else { // ЕСЛИ НЕТ дочерн категорий - то выводим сразу записи ?> <div class="collection"> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <a class="collection__item" href="#"> <?php the_post_thumbnail( 'full', array( 'class' => 'collection__images' ) ); ?> <div class="collection__info"> <h6 class="collection__info-title"> <?php get_the_title(); ?> </h6> <p class="collection__info-text"> <?php get_the_content(); ?> </p> </div> </a> <?php endwhile; else: ?> Записей нет. <?php endif; ?> </div> <?php } ?> </div> </section> </main> <?php get_footer() ?>код изменил - посмотрите, изучите.
Если цикл дочерних категорий - в нем получаем записи.
Если нет дочерних категорий - то сразу выводим записи.
оууууу, сейчас очень помогли, буду разбираться, большое спасибо, сделали мой день!
и последний вопрос, get_permalink() прописал у ссылок, но перехода на страницу single-product.php нет, в чём может быть ошибка?
лучше так, сразу с $post И echo добавить нужно.
А куда есть переход? какая ссылка формируется?
до вставки была: http://modern-expo/category-product/other-production/
после стала :http://modern-expo/product/saner/
До этого страница просто обновлялась и всё
это правильная ссылка на страницу продукта.
Отлично, спасибо
http://modern-expo/product/ - чтобы был переход на главную страницу, мне нужно сделать шаблон product.php в котором прописать переход на главную страницу, всё верно?
И тоже самое если будет переход на http://modern-expo/category-product/