仅显示 Woocommerce 子产品类别
Only display Woocommerce child product categories
我目前正在使用以下代码来获取 WooCommerce 产品类别:
<?php
$orderby = 'name';
$order = 'asc';
$hide_empty = false ;
$cat_args = array(
'orderby' => $orderby,
'order' => $order,
'hide_empty' => $hide_empty,
);
$product_categories = get_terms( 'product_cat', $cat_args );
if( !empty($product_categories) ){
echo '<ul>';
foreach ($product_categories as $key => $category) {
echo '<li>';
echo '<a href="'.get_term_link($category).'" >';
echo $category->name;
echo '</a>';
echo '<li>';
}
echo '</ul>';
}
?>
当前显示所有类别,但我希望只显示子类别。
例如,如果您在类别 1 页面上,它应该只显示该类别中的所有儿童。
我在这里查看了很多示例,但无法找到适合我需要的东西。
在主题的 functions.php 文件中添加以下代码。
add_filter('get_child_category', 'get_child_cat', 10, 1);
function get_child_cat($term_id = 0){
global $wpdb;
$result = array('status' => 'fail');
if($term_id != 0){
$result = $wpdb->get_results( "select ".$wpdb->prefix."terms.term_id, ".$wpdb->prefix."terms.name, ".$wpdb->prefix."terms.slug, ".$wpdb->prefix."terms.term_group, ".$wpdb->prefix."term_taxonomy.term_taxonomy_id, ".$wpdb->prefix."term_taxonomy.taxonomy, ".$wpdb->prefix."term_taxonomy.description, ".$wpdb->prefix."term_taxonomy.parent, ".$wpdb->prefix."term_taxonomy.count from ".$wpdb->prefix."terms left join ".$wpdb->prefix."term_taxonomy on ".$wpdb->prefix."term_taxonomy.term_id = ".$wpdb->prefix."terms.term_id where ".$wpdb->prefix."term_taxonomy.parent = $term_id" );
}
return $result;
}
使用以下代码获取子类别的数组输出。
$cat = apply_filters( 'get_child_category', $term_id ); // where $term_id is your parent category id.
注意:此代码仅用于单级术语。
根据您的要求更改代码。
您可以将其添加到 woocommerce/archive-product.php 文件
$queried_object = get_queried_object();
$parent = $queried_object->term_id;
$categories = get_term_children( $parent, 'product_cat' );
if ( $categories && ! is_wp_error( $category ) ) :
echo '<ul>';
foreach($categories as $category) :
$term = get_term( $category, 'product_cat' );
echo '<li>';
echo '<a href="'.get_term_link($term).'" >';
echo $term->name;
echo '</a>';
echo '</li>';
endforeach;
echo '</ul>';
endif;
这仅适用于您的档案。和类别 children.
它还会输出大 child 个类别。
希望对您有所帮助。
这里是一种只获取按名称 ASC 排序的产品子类别链表的方法:
// The product category taxonomy
$taxonomy = 'product_cat';
// Get the parent categories IDs
$parent_cat_ids = get_terms( $taxonomy, array(
'parent' => 0,
'hide_empty' => false,
'fields' => 'ids'
) );
// Get only "child" WP_Term Product categories
$subcategories = get_terms( $taxonomy, array(
'exclude' => $parent_cat_ids,
'orderby' => 'name',
'order' => 'asc',
'hide_empty' => false,
) );
if( ! empty( $subcategories ) ){
echo '<ul>';
foreach ($subcategories as $subcategory) {
echo '<li>
<a href="'. get_term_link($subcategory) .'" >' . $subcategory->name.'</a>
</li>';
}
echo '</ul>';
}
代码已经过测试并且有效
我目前正在使用以下代码来获取 WooCommerce 产品类别:
<?php
$orderby = 'name';
$order = 'asc';
$hide_empty = false ;
$cat_args = array(
'orderby' => $orderby,
'order' => $order,
'hide_empty' => $hide_empty,
);
$product_categories = get_terms( 'product_cat', $cat_args );
if( !empty($product_categories) ){
echo '<ul>';
foreach ($product_categories as $key => $category) {
echo '<li>';
echo '<a href="'.get_term_link($category).'" >';
echo $category->name;
echo '</a>';
echo '<li>';
}
echo '</ul>';
}
?>
当前显示所有类别,但我希望只显示子类别。
例如,如果您在类别 1 页面上,它应该只显示该类别中的所有儿童。
我在这里查看了很多示例,但无法找到适合我需要的东西。
在主题的 functions.php 文件中添加以下代码。
add_filter('get_child_category', 'get_child_cat', 10, 1);
function get_child_cat($term_id = 0){
global $wpdb;
$result = array('status' => 'fail');
if($term_id != 0){
$result = $wpdb->get_results( "select ".$wpdb->prefix."terms.term_id, ".$wpdb->prefix."terms.name, ".$wpdb->prefix."terms.slug, ".$wpdb->prefix."terms.term_group, ".$wpdb->prefix."term_taxonomy.term_taxonomy_id, ".$wpdb->prefix."term_taxonomy.taxonomy, ".$wpdb->prefix."term_taxonomy.description, ".$wpdb->prefix."term_taxonomy.parent, ".$wpdb->prefix."term_taxonomy.count from ".$wpdb->prefix."terms left join ".$wpdb->prefix."term_taxonomy on ".$wpdb->prefix."term_taxonomy.term_id = ".$wpdb->prefix."terms.term_id where ".$wpdb->prefix."term_taxonomy.parent = $term_id" );
}
return $result;
}
使用以下代码获取子类别的数组输出。
$cat = apply_filters( 'get_child_category', $term_id ); // where $term_id is your parent category id.
注意:此代码仅用于单级术语。 根据您的要求更改代码。
您可以将其添加到 woocommerce/archive-product.php 文件
$queried_object = get_queried_object();
$parent = $queried_object->term_id;
$categories = get_term_children( $parent, 'product_cat' );
if ( $categories && ! is_wp_error( $category ) ) :
echo '<ul>';
foreach($categories as $category) :
$term = get_term( $category, 'product_cat' );
echo '<li>';
echo '<a href="'.get_term_link($term).'" >';
echo $term->name;
echo '</a>';
echo '</li>';
endforeach;
echo '</ul>';
endif;
这仅适用于您的档案。和类别 children.
它还会输出大 child 个类别。
希望对您有所帮助。
这里是一种只获取按名称 ASC 排序的产品子类别链表的方法:
// The product category taxonomy
$taxonomy = 'product_cat';
// Get the parent categories IDs
$parent_cat_ids = get_terms( $taxonomy, array(
'parent' => 0,
'hide_empty' => false,
'fields' => 'ids'
) );
// Get only "child" WP_Term Product categories
$subcategories = get_terms( $taxonomy, array(
'exclude' => $parent_cat_ids,
'orderby' => 'name',
'order' => 'asc',
'hide_empty' => false,
) );
if( ! empty( $subcategories ) ){
echo '<ul>';
foreach ($subcategories as $subcategory) {
echo '<li>
<a href="'. get_term_link($subcategory) .'" >' . $subcategory->name.'</a>
</li>';
}
echo '</ul>';
}
代码已经过测试并且有效