Wordpress 使用WooCommerce按类别显示所有产品

Wordpress 使用WooCommerce按类别显示所有产品,wordpress,woocommerce,hook,hook-woocommerce,Wordpress,Woocommerce,Hook,Hook Woocommerce,使用WooCommerce,我希望以标题的形式显示商店中的所有类别,并在无序列表中列出他们的所有产品。这可能吗?我看到了一些东西,可以让我显示一个类别列表或一个特定类别的产品列表。我在产品页面上使用这些钩子,这段代码只显示产品。所以我需要一些帮助来摆脱这一切。提前谢谢 Here's what I'm currently using to list all categories: <?php /** * The template for displaying product conten

使用WooCommerce,我希望以标题的形式显示商店中的所有类别,并在无序列表中列出他们的所有产品。这可能吗?我看到了一些东西,可以让我显示一个类别列表或一个特定类别的产品列表。我在产品页面上使用这些钩子,这段代码只显示产品。所以我需要一些帮助来摆脱这一切。提前谢谢

Here's what I'm currently using to list all categories:

<?php
/**
 * The template for displaying product content within loops
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/content-product.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see     https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce/Templates
 * @version 3.6.0
 */

defined( 'ABSPATH' ) || exit;

global $product;

// Ensure visibility.
if ( empty( $product ) || ! $product->is_visible() ) {
    return;
}
?>
<li <?php wc_product_class( '', $product ); ?>>
    <?php
    /**
     * Hook: woocommerce_before_shop_loop_item.
     *
     * @hooked woocommerce_template_loop_product_link_open - 10
     */
    do_action( 'woocommerce_before_shop_loop_item' );

    /**
     * Hook: woocommerce_before_shop_loop_item_title.
     *
     * @hooked woocommerce_show_product_loop_sale_flash - 10
     * @hooked woocommerce_template_loop_product_thumbnail - 10
     */
    do_action( 'woocommerce_before_shop_loop_item_title' );

    /**
     * Hook: woocommerce_shop_loop_item_title.
     *
     * @hooked woocommerce_template_loop_product_title - 10
     */
    do_action( 'woocommerce_shop_loop_item_title' );

    /**
     * Hook: woocommerce_after_shop_loop_item_title.
     *
     * @hooked woocommerce_template_loop_rating - 5
     * @hooked woocommerce_template_loop_price - 10
     */
    do_action( 'woocommerce_after_shop_loop_item_title' );

    /**
     * Hook: woocommerce_after_shop_loop_item.
     *
     * @hooked woocommerce_template_loop_product_link_close - 5
     * @hooked woocommerce_template_loop_add_to_cart - 10
     */
    do_action( 'woocommerce_after_shop_loop_item' );
    ?>
</li>
以下是我目前用于列出所有类别的内容:


我想以标题的形式显示商店中的所有类别,并将其所有产品列在无序列表中。

类似的内容应该适合您:

$woocommerce_category_id = get_queried_object_id();
$args = array(
   'parent' => $woocommerce_category_id
);
$terms = get_terms( 'product_cat', $args );
if ( $terms ) {
   echo '<ul class="woocommerce-categories">';
   foreach ( $terms as $term ) {
        echo '<li class="woocommerce-product-category-page">';
        woocommerce_subcategory_thumbnail( $term );
        echo '<h2>';
        echo '<a href="' .  esc_url( get_term_link( $term ) ) . '" class="' . $term->slug . '">';
        echo $term->name;
        echo '</a>';
        echo '</h2>';

        $products = get_cat_products($term);
        foreach($products as $product){
            //Output products HTML here

        }
        echo '</li>';
    }
    echo '</ul>';
}

function get_cat_products($term){
  $args = array(
       'post_type'             => 'product',
       'post_status'           => 'publish',
       'ignore_sticky_posts'   => 1,    
       'tax_query'             => array(
          array(
            'taxonomy'      => 'product_cat',
            'field' => 'slug', 
            'terms'         => $term->name,
            'operator'      => 'IN' 
          )
       )
   );
   $products = new WP_Query($args);

   return products;
}

$woocommerce\u category\u id=get\u queryed\u object\u id();
$args=数组(
“父项”=>$woocommerce\u类别\u id
);
$terms=获取术语('product\u cat',$args);
如果($条款){
echo'
    ; foreach($terms作为$term){ echo'
  • ; woocommerce_子类别_缩略图($term); 回声'; 回声'; 回声'; $products=获取猫产品($term); foreach($products as$product){ //在此处输出产品HTML } 回音“
  • ”; } 回声“
”; } 函数获取类别产品($term){ $args=数组( “post_类型”=>“产品”, “发布状态”=>“发布”, “忽略粘性帖子”=>1, “tax_query”=>数组( 排列( “分类法”=>“产品分类”, '字段'=>'段塞', “术语”=>$term->name, '运算符'=>'输入' ) ) ); $products=新的WP_查询($args); 退货产品; }