Скрыть конкретную категорию на странице магазина WooCommerce - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть страница магазина в WooCommerce, и я использую ее для переопределения «archive-product.php»

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

Честно говоря, я графический дизайнер, и большая часть моих знаний остается в CSS и HTML ... поэтому любая помощь будет принята с благодарностью.

Спасибо!

<?php
    /**
     * woocommerce_before_main_content hook.
     *
     * @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
     * @hooked woocommerce_breadcrumb - 20
     */
    do_action( 'woocommerce_before_main_content' );
?>

    <?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>

        <h1 class="page-title"><?php woocommerce_page_title(); ?></h1>

    <?php endif; ?>

    <?php
        /**
         * woocommerce_archive_description hook.
         *
         * @hooked woocommerce_taxonomy_archive_description - 10
         * @hooked woocommerce_product_archive_description - 10
         */
        do_action( 'woocommerce_archive_description' );
    ?>

    <?php if ( have_posts() ) : ?>

        <?php
            /**
             * woocommerce_before_shop_loop hook.
             *
             * @hooked woocommerce_result_count - 20
             * @hooked woocommerce_catalog_ordering - 30
             */
            do_action( 'woocommerce_before_shop_loop' );

            /* Category - SubCategory START */
            $term           = get_queried_object();
            $parent_id      = empty( $term->term_id ) ? 0 : $term->term_id;

            $product_categories = get_categories( array( 'taxonomy' => 'product_cat', 'child_of' => $parent_id) );

            $i = 1;
            foreach ($product_categories as $product_category) {
                echo '<h2>'.$product_category->name.'</h2>';
                woocommerce_product_loop_start(); //open ul

                $args = array(
                    'posts_per_page' => -1,
                    'tax_query' => array(
                    'relation' => 'AND',
                        array(
                            'taxonomy' => 'product_cat',
                            'field' => 'slug',
                            'terms' => $product_category->slug
                        ),
                    ),
                    'post_type' => 'product',
                    'orderby' => 'menu_order',
                    'order' => 'asc',
                );
                $cat_query = new WP_Query( $args );

                while ( $cat_query->have_posts() ) : $cat_query->the_post();
                    wc_get_template_part( 'content', 'product' );
                endwhile; // end of the loop.
            wp_reset_postdata();
            woocommerce_product_loop_end(); //close ul
            if ( $i < count($product_categories) )
                echo '<div class="content-seperator"></div>';
            $i++;
            }//foreach

            /* Category - SubCategory END */

            /**
             * woocommerce_after_shop_loop hook.
             *
             * @hooked woocommerce_pagination - 10
             */
            do_action( 'woocommerce_after_shop_loop' );
        ?>

    <?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>

        <?php wc_get_template( 'loop/no-products-found.php' ); ?>

    <?php endif; ?>

<?php
    /**
     * woocommerce_after_main_content hook.
     *
     * @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
     */
    do_action( 'woocommerce_after_main_content' );
?>

<?php
    /**
     * woocommerce_sidebar hook.
     *
     * @hooked woocommerce_get_sidebar - 10
     */
    do_action( 'woocommerce_sidebar' );
?>

1 Ответ

0 голосов
/ 12 февраля 2019

Изменение

$product_categories = get_categories( array( 'taxonomy' => 'product_cat', 'child_of' => $parent_id) );

с помощью:

$excludedCats = array(23,12,55); //Where 23,12 and 55 are category ids you want to leave out
$excludedCats = "23,12,55" //This works too

$product_categories = get_categories( array( 'taxonomy' => 'product_cat', 'child_of' => $parent_id, 'exclude' => $excludedCats) );

должно делать то, что вам нужно.Источники: 1 , 2 и 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...