在WooCommerce商店页面中隐藏特定类别

时间:2019-02-12 20:13:42

标签: php wordpress woocommerce

我在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 :(得分:0)

修改

$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) );

应该做您所需要的。 来源:123