WooCommerce-在最后一个类别中获取(直接)父类别
仅当我查看最后一个/最深的类别时,我希望显示为链接,父类别(而不是祖父类别)。更具表现力的是,当我浏览类别时,我有一些代码可以获取当前类别的子类别/子类别。代码是这样的WooCommerce-在最后一个类别中获取(直接)父类别,woocommerce,parent-child,Woocommerce,Parent Child,仅当我查看最后一个/最深的类别时,我希望显示为链接,父类别(而不是祖父类别)。更具表现力的是,当我浏览类别时,我有一些代码可以获取当前类别的子类别/子类别。代码是这样的 function sub_cats( $args = array() ) { $terms = get_terms([ 'taxonomy' => get_queried_object()->taxonomy, 'parent' => get_queried_obj
function sub_cats( $args = array() ) {
$terms = get_terms([
'taxonomy' => get_queried_object()->taxonomy,
'parent' => get_queried_object_id(),
]);
foreach ( $terms as $term) {
echo '<li>';
echo '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a>';
echo '<li>';
}
}
函数子函数($args=array()){
$terms=获取条款([
“分类法”=>get\u queryed\u object()->taxonomy,
'parent'=>get\u queryed\u object\u id(),
]);
foreach($terms作为$term){
回音“”;
回声';
回音“ ”;
}
}
由于我到达了每个类别树的最后一个/最深的类别/子类别,因此没有其他类别可显示。
现在,我被要求显示为链接,仅显示最后一个/最深类别的直接父类别(而不是祖父类别),并且仅显示当时的链接
我发现,要检查当前类别中是否有儿童,如果有,请启动上述代码。如果没有,则获取父类别。但在这里,我将其全部放大,因为作为回报,我将得到数据库中所有属性和类别的结果
//Get current category
$term = get_queried_object();
$children = get_terms( $term->taxonomy, array(
'parent' => $term->term_id,
'hide_empty' => false
) );
//If this category has children then get me the children
if($children) {
$terms = get_terms([
'taxonomy' => get_queried_object()->taxonomy,
'parent' => get_queried_object_id(),
]);
foreach ( $terms as $term) {
echo '<li>';
echo '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a>';
echo '<li>';
}
} else { //ELSE get me only the parent category -> HERE IS MY PROBLEM
$caterms = get_terms( $product->ID, 'product_cat' );
foreach ($caterms as $category) {
if($category->parent == 0){
echo '<li>';
echo '<a href="' . get_term_link( $category ) . '">' . $category->name . '</a>';
echo '<li>';
}
}
}
//获取当前类别
$term=get_queryed_object();
$children=get_terms($term->分类法,数组)(
“父项”=>$term->term\u id,
“hide_empty”=>false
) );
//如果这个类别有孩子,那么给我孩子
如果($儿童){
$terms=获取条款([
“分类法”=>get\u queryed\u object()->taxonomy,
'parent'=>get\u queryed\u object\u id(),
]);
foreach($terms作为$term){
回音“”;
回声';
回音“ ”;
}
}else{//else只获取父类别->这是我的问题
$caterms=get_terms($product->ID,'product_cat');
foreach($caterms作为$category){
如果($category->parent==0){
回音“ ”;
回声';
回音“ ”;
}
}
}
请提供帮助您可以使用
术语
对象中的父项
属性,并直接使用获取术语
$term=get_queryed_object()//获取当前术语
$children=get_terms($term->taxonomy,array(//get term children
“父项”=>$term->term\u id,
“hide_empty”=>false
) );
如果($儿童){
$terms=获取条款(
排列(
“分类法”=>$term->taxonomy,
“父项”=>$term->term\u id,
)
);
foreach($terms作为$term){
回音“”;
}
}否则{
$parent\u id=$term->parent;
$parent\u term=get\u term\u by('term\u id',$parent\u id);//获取直接父项
回音“”;
}
此函数用于获取所有产品类别的li标签,从第一级/顶级类别到最后一级/底层类别。然后,当浏览到底部/最深的类别时,会得到所有相同的-(最后一个/最深的)级别类别。因此,类别树不会在深入/最后一个类别时消失
function sub_cats( $args = array() ) {
$term = get_queried_object(); //get current term
$children = get_terms( $term->taxonomy, array( //get term children
'parent' => $term->term_id,
'hide_empty' => false
) );
if($children) {
$terms = get_terms(
array(
'taxonomy' => $term->taxonomy,
'parent' => $term->term_id,
)
);
foreach ( $terms as $term) {
echo '<li><a href="' . get_term_link( $term ) . '">' . $term->name . '</a></li>';
}
} else {
$term_children = get_terms(
'product_cat',
array(
'parent' => $term->parent,
)
);
if ( ! is_wp_error( $terms ) ) {
foreach ( $term_children as $child ) {
echo '<li><a href="' . get_term_link( $child ) . '">' . $child->name . '</a>
</li>';
}
}
}
}
add_shortcode ('sub_cats', ' sub_cats' );
函数子函数($args=array()){
$term=get_queryed_object();//获取当前术语
$children=get_terms($term->taxonomy,array(//get term children
“父项”=>$term->term\u id,
“hide_empty”=>false
) );
如果($儿童){
$terms=获取条款(
排列(
“分类法”=>$term->taxonomy,
“父项”=>$term->term\u id,
)
);
foreach($terms作为$term){
回音“”;
}
}否则{
$term\u children=获取\u术语(
“产品类别”,
排列(
“父项”=>$term->parent,
)
);
如果(!is_wp_error($terms)){
foreach($term_children as$child){
回声'
';
}
}
}
}
添加_短代码(“sub_猫”、“sub_猫”);
特别感谢Panos(VG)和@Frits感谢您的宝贵时间。我尝试了您的建议,但得到->可恢复致命错误:类WP_error的对象无法转换为字符串。。。函数->可恢复致命错误:类WP_error的对象无法转换为字符串。。。只有当我进入最后一个/最深的类别时,函数才会发生。不过,rest父类别树正在运行。@Papsofah我想我知道问题出在哪里了。我在echo语句中使用了错误的变量-请立即尝试?不幸的是,它不起作用。当我查看最后一个孩子时,我没有得到最后一个孩子的家长类别。非常感谢您的帮助。你真的帮了我很多。我做了一点小小的修改就成功了。老实说,我想我误解了我的想法,问了一个错误的问题,你解决了这个问题。实际问题是如何从直接父类别中获取当前所有同级子类别。我会发布我的功能,以防它对某人有帮助。再次感谢你
function sub_cats( $args = array() ) {
$term = get_queried_object(); //get current term
$children = get_terms( $term->taxonomy, array( //get term children
'parent' => $term->term_id,
'hide_empty' => false
) );
if($children) {
$terms = get_terms(
array(
'taxonomy' => $term->taxonomy,
'parent' => $term->term_id,
)
);
foreach ( $terms as $term) {
echo '<li><a href="' . get_term_link( $term ) . '">' . $term->name . '</a></li>';
}
} else {
$term_children = get_terms(
'product_cat',
array(
'parent' => $term->parent,
)
);
if ( ! is_wp_error( $terms ) ) {
foreach ( $term_children as $child ) {
echo '<li><a href="' . get_term_link( $child ) . '">' . $child->name . '</a>
</li>';
}
}
}
}
add_shortcode ('sub_cats', ' sub_cats' );