@vladzvezdin

Как вывести кастомные типы записей по рубрикам?

На сайте есть страница, где выводятся термины. термины подразделяются на рубрики и эти рубрики с терминами выводятся в столбцы. Я создал кастомный тип записей "Термины" и создал рубрику для них "Тип термина". Когда вывожу записи на страницу. То термины не привязываются к отмеченной рубрике, а отображаются сразу во всех рубриках. Надеюсь понятно объяснил.
5b5872b0747d0509173748.png
//Кастомный тип ТЕРМИНЫ
function cptui_register_my_cpts_terms() {
    $labels = array(
        "name" => __( 'Термины', 'twentytwelve' ),
        "singular_name" => __( 'Термин', 'twentytwelve' ),
        "menu_name" => __( 'Термины', 'twentytwelve' ),
        "all_items" => __( 'Все термины', 'twentytwelve' ),
        "add_new" => __( 'Добавить термин', 'twentytwelve' ),
        "add_new_item" => __( 'Добавить новый термин', 'twentytwelve' ),
        "edit_item" => __( 'Редактировать термин', 'twentytwelve' ),
        "new_item" => __( 'Новый термин', 'twentytwelve' ),
        "view_item" => __( 'Просмотреть термин', 'twentytwelve' ),
        "view_items" => __( 'Просмотреть термины', 'twentytwelve' ),
        "search_items" => __( 'Поиск терминов', 'twentytwelve' ),
        "not_found" => __( 'Термины не найдены', 'twentytwelve' ),
        "not_found_in_trash" => __( 'Термины не найдены в корзине', 'twentytwelve' ),
    );
    $args = array(
        "label" => __( 'Термины', 'twentytwelve' ),
        "labels" => $labels,
        "description" => "Термины",
        "public" => true,
        "publicly_queryable" => true,
        "show_ui" => true,
        "show_in_rest" => false,
        "rest_base" => "",
        "menu_icon" => "dashicons-list-view",
        "has_archive" => 'terms',
        "show_in_menu" => true,
        "exclude_from_search" => false,
        "capability_type" => "post",
        "map_meta_cap" => true,
        "hierarchical" => false,
        "rewrite" => array( "slug" => "terms", "with_front" => true ),
        "query_var" => true,
        "supports" => array( "title", "editor", "thumbnail", "custom-fields", "revisions" ),
    );
    register_post_type( "terms", $args );
}
add_action( 'init', 'cptui_register_my_cpts_terms' );


//Новая таксономия ТЕРМИНЫ
function cptui_register_my_taxes_terms_types() {
    $labels = array(
        "name" => __( 'Тип терминов', 'twentytwelve' ),
        "singular_name" => __( 'Тип термина', 'twentytwelve' ),
        "all_items" => __( 'Все типы терминов', 'twentytwelve' ),
        "edit_item" => __( 'Редактировать тип термина', 'twentytwelve' ),
        "add_new_item" => __( 'Добавить новый тип термина', 'twentytwelve' ),
    );
    $args = array(
        "label" => __( 'Тип термина', 'twentytwelve' ),
        "labels" => $labels,
        "public" => false,
        "hierarchical" => true,
        "label" => "Тип термина",
        "show_ui" => true,
        "show_in_menu" => true,
        "show_in_nav_menus" => true,
        "query_var" => true,
        "rewrite" => false,
        "show_admin_column" => false,
        "show_in_rest" => false,
        "rest_base" => "",
        "show_in_quick_edit" => false,
    );
    register_taxonomy( "terms-types", array( "terms" ), $args );
}
add_action( 'init', 'cptui_register_my_taxes_terms_types' );


<div class="content">

                    <div class="terms-row">

                        <?php
                        $terms_type = get_terms(array(
                            'taxonomy' => 'terms-types',
                            'hide_empty' => 0,
                        ));
                        ?>
                        <?php if ( $terms_type ) { ?>

                        <?php foreach ( $terms_type as $type ) { ?>

                        <div class="terms-col">
                            <h3><?php echo $type->name; ?></h3>
                                <?php $terms = new WP_Query(array('post_type' => 'terms')); ?>
                                <?php if ($terms->have_posts()) : while ($terms->have_posts()) : $terms->the_post(); ?>

                                <div class="terms-item">
                                <h4 class="terms-item-title"><span><?php the_title(); ?></span></h4>
                                <div class="terms-content">
                                    <?php the_content(); ?>
                                </div>
                            </div>
                                <?php endwhile;
                                else: echo '<h2>Извините, ничего не найдено...</h2>'; endif; ?>
                            <?php wp_reset_query(); ?>
                        </div>

                        <?php } ?>
                        <?php } ?>



    </div>



                </div>
  • Вопрос задан
  • 1089 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix
Java Software Engineer
Здравствуйте!
Вы при создании кастомного типа записи не указали принадлежность таксономии.
Пример -
'taxonomies' => array('portfoliocat'),

Чтобы отображать записи и категории по типу:
Категория 1
- запись 1
- запись 2
Категория 2
- запись 3
- запись 4
нужно использовать 2 цикла. - получает категории, второй получает посты к ним.
Пример - https://gist.github.com/DevinWalker/6fb2783c05b46a...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы