Как правильно организовать каталог по custom post type?

Ссылка скопирована
1 ответ

Люди скиньте ссылку как правильно сделать
Нужен каталог простенький- это я могу сделать через custom post type + acf
но как этот каталог разбить на категории?
это нужно таксономии подключать? или как правильно сделать?
Может есть где то пример в сети как его организовать?
на впкама смотрел, что то не понятно, может не тот линк надыбал

Спасибо

Дополнительно

Как правильно организовать каталог по custom post type?

Вова Дружаев @OtshelnikFm Куратор тега WordPress Обо мне расскажет yawncato.com register_taxonomy() - хоть одну, хоть 10-ть таксономий регай. Зависит от задач. Ну и в них нужные создавай - по типу категорий что упомянул

  • Подскажите пожалуйста
    как мне разделить типы постов по таксономиям
    вот допустим я вывожу пост тип news, но в нем есть таксономии(категории в общем)
    мне нужно вывести в табах отдельные таксономии из post news, как это сделать?
    <?php  // Запрашиваем продукты $query = new WP_Query( [   'post_type'      => 'news',   'posts_per_page' => 9,   'paged'          => get_query_var( 'page' ), ] );  // Обрабатываем полученные в запросе продукты, если они есть if ( $query->have_posts() ) {    while ( $query->have_posts() ) { 	$query->the_post();?>  	<div class="news-item"> 	  <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> 	  <p><?php $content = get_the_content(); echo mb_strimwidth($content, 0, 120, '.');?></p> 	</div>    <?php }    wp_reset_postdata(); }

    <?php // Запрашиваем продукты $query = new WP_Query( [ 'post_type' => 'news', 'posts_per_page' => 9, 'paged' => get_query_var( 'page' ), ] ); // Обрабатываем полученные в запросе продукты, если они есть if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post();?> <div class="news-item"> <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <p><?php $content = get_the_content(); echo mb_strimwidth($content, 0, 120, '.');?></p> </div> <?php } wp_reset_postdata(); }

    буду очень благодарен

  • rootnoroot, через get_terms() указав в аргументе 'taxonomy' нужную для типа записи
Нужно решить такую задачу?

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

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

Правильная схема для простого каталога такая: custom post type хранит карточки объектов, таксономия делит их на категории, ACF хранит характеристики, а шаблоны отвечают за вывод. Категории не стоит делать отдельным ACF-полем, если по ним нужно строить архивы, табы, фильтры или SEO-страницы. Для этого в WordPress есть register_taxonomy.

add_action('init', function () {
    register_post_type('news', [
        'label' => 'Новости',
        'public' => true,
        'has_archive' => true,
        'show_in_rest' => true,
        'supports' => ['title', 'editor', 'thumbnail', 'excerpt'],
    ]);
 
    register_taxonomy('news_category', ['news'], [
        'label' => 'Категории новостей',
        'public' => true,
        'hierarchical' => true,
        'show_admin_column' => true,
        'show_in_rest' => true,
        'rewrite' => ['slug' => 'news-category'],
    ]);
});

add_action('init', function () { register_post_type('news', [ 'label' => 'Новости', 'public' => true, 'has_archive' => true, 'show_in_rest' => true, 'supports' => ['title', 'editor', 'thumbnail', 'excerpt'], ]); register_taxonomy('news_category', ['news'], [ 'label' => 'Категории новостей', 'public' => true, 'hierarchical' => true, 'show_admin_column' => true, 'show_in_rest' => true, 'rewrite' => ['slug' => 'news-category'], ]); });

После регистрации в админке у записей news появится блок категорий. Для табов сначала получаете термины этой таксономии:

$terms = get_terms([
    'taxonomy' => 'news_category',
    'hide_empty' => true,
]);

$terms = get_terms([ 'taxonomy' => 'news_category', 'hide_empty' => true, ]);

А для вывода записей выбранной вкладки делаете WP_Query с tax_query:

$query = new WP_Query([
    'post_type' => 'news',
    'post_status' => 'publish',
    'posts_per_page' => 9,
    'tax_query' => [[
        'taxonomy' => 'news_category',
        'field' => 'slug',
        'terms' => $current_term_slug,
    ]],
]);

$query = new WP_Query([ 'post_type' => 'news', 'post_status' => 'publish', 'posts_per_page' => 9, 'tax_query' => [[ 'taxonomy' => 'news_category', 'field' => 'slug', 'terms' => $current_term_slug, ]], ]);

Для шаблонов обычно используют archive-news.php для общего архива, single-news.php для карточки и taxonomy-news_category.php для страниц категорий. Если каталог выводится внутри обычной страницы, можно сделать shortcode или отдельный шаблон страницы. URL и slug таксономии лучше продумать сразу: после индексации менять их можно только с 301-редиректами, иначе получите битые ссылки и просадку SEO.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно