How To Get WooCommerce Product Categories

Alpha Insights

Boost Your ROAS.

Connecting WooCommerce Orders To Your Ad Campaigns Is Just The Beginning...

WooCommerce Cost Of Goods Order Profit Reports

Get A List Of All WooCommerce Categories Using PHP

It can be useful to put together a list of all product categories you have in your WooCommerce store.

If you know a little bit of PHP, or even if you know how to access your functions.php file, you can use the snippets on this page to create a list of WooCommerce Categories.

Output List Of WooCommerce Categories

The code snippet below will create a list of woocommerce product categories with sub-categories as child list elements below.

You can style the output by using the class selector “wc-product-categories-list”.

You can also get rid of sub categories by getting rid of the sub categories section or by simply deleting line 56.

				
						  $taxonomy     = 'product_cat';
	  $orderby      = 'name';  
	  $show_count   = 0;      // 1 for yes, 0 for no
	  $pad_counts   = 0;      // 1 for yes, 0 for no
	  $hierarchical = 1;      // 1 for yes, 0 for no  
	  $title        = '';  
	  $empty        = 0;

	  $args = array(
	         'taxonomy'     => $taxonomy,
	         'orderby'      => $orderby,
	         'show_count'   => $show_count,
	         'pad_counts'   => $pad_counts,
	         'hierarchical' => $hierarchical,
	         'title_li'     => $title,
	         'hide_empty'   => $empty
	  );

	 $all_categories = get_categories( $args );

	 echo '<ul class="wc-product-categories-list">';

	 foreach ( $all_categories as $cat ) {

	    if ( $cat->category_parent == 0 ) {

	        $category_id = $cat->term_id;    

	        echo '<li><a href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a></li>';

	        /**
	         *
	         *	Show Sub Categories Too
	         *
	         */
	        $args2 = array(
	                'taxonomy'     => $taxonomy,
	                'child_of'     => 0,
	                'parent'       => $category_id,
	                'orderby'      => $orderby,
	                'show_count'   => $show_count,
	                'pad_counts'   => $pad_counts,
	                'hierarchical' => $hierarchical,
	                'title_li'     => $title,
	                'hide_empty'   => $empty
	        );

	        $sub_cats = get_categories( $args2 );

	        if ( $sub_cats ) {

	        	echo '<ul class="wc-sub-categories-list">';

	            foreach( $sub_cats as $sub_category ) {

	                echo  '<li>><a href="'. get_term_link($sub_category->slug, 'product_cat') .'">'. $sub_category->name .'</a></li>';

	            }

	            echo '</ul>';

	        }

	    }  

	}

	echo '</ul>';
				
			

Create Shortcode With List Of WooCommerce Product Categories

It takes very little extra effort to turn the above into a shortcode.

Copy and paste the below snippet into your functions.php file and then you can use a shortcode like this: [wpd-product-categories]

				
					add_shortcode( 'wpd-product-categories', 'wpd_product_categories' );
function wpd_product_categories() {

	ob_start();

	$taxonomy     = 'product_cat';
	$orderby      = 'name';  
	$show_count   = 0;      // 1 for yes, 0 for no
	$pad_counts   = 0;      // 1 for yes, 0 for no
	$hierarchical = 1;      // 1 for yes, 0 for no  
	$title        = '';  
	$empty        = 0;

	$args = array(
		'taxonomy'     => $taxonomy,
		'orderby'      => $orderby,
		'show_count'   => $show_count,
		'pad_counts'   => $pad_counts,
		'hierarchical' => $hierarchical,
		'title_li'     => $title,
		'hide_empty'   => $empty
	);

	$all_categories = get_categories( $args );

	echo '<ul class="wc-product-categories-list">';

	foreach ( $all_categories as $cat ) {

		if ( $cat->category_parent == 0 ) {

			$category_id = $cat->term_id;    

			echo '<li><a href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a></li>';

			/**
			 *
			 *	Show Sub Categories Too
			 *
			 */
			$args2 = array(
				'taxonomy'     => $taxonomy,
				'child_of'     => 0,
				'parent'       => $category_id,
				'orderby'      => $orderby,
				'show_count'   => $show_count,
				'pad_counts'   => $pad_counts,
				'hierarchical' => $hierarchical,
				'title_li'     => $title,
				'hide_empty'   => $empty
			);

			$sub_cats = get_categories( $args2 );

			if ( $sub_cats ) {

				echo '<ul class="wc-sub-categories-list">';

			    foreach( $sub_cats as $sub_category ) {

			        echo  '<li>><a href="'. get_term_link($sub_category->slug, 'product_cat') .'">'. $sub_category->name .'</a></li>';

			    }

			    echo '</ul>';

			}

		}  

	}

	echo '</ul>';

	return ob_get_clean();

}
				
			
Subscribe
Notify of
guest
1 Comment
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Akbar
Akbar
5 months ago

Great, it work for me. Thanks

Alpha Insights

The World's Most Advanced WooCommerce Reporting Plugin.

WooCommerce Cost Of Goods Order Profit Reports

Want To Grow Your Store?

Join our newsletter for 25% off on all of our plugins & services, exclusive access to eCommerce content & personalized WooCommerce development support.

Alpha Insights

Alpha Insights

The World's Most Advanced WooCommerce Reporting Plugin.

WooCommerce Cost Of Goods Order Profit Reports