Wordpress-如何从其他特定类别中的产品中获取类别
我有服装产品。一种产品有多个类别,如“性别”(“男性”或“女性”)和“类型”(如“裤子”、“衬衫”等) 我想列出所有类别和子类别的“类型”从产品中存在的“男子”类别 “类型”类别的ID:1696Wordpress-如何从其他特定类别中的产品中获取类别,wordpress,woocommerce,product,categories,Wordpress,Woocommerce,Product,Categories,我有服装产品。一种产品有多个类别,如“性别”(“男性”或“女性”)和“类型”(如“裤子”、“衬衫”等) 我想列出所有类别和子类别的“类型”从产品中存在的“男子”类别 “类型”类别的ID:1696 $args = array( 'taxonomy' => 'product_cat', 'orderby' => 'title', 'order' => 'ASC', 'child_of' => 1696, ); $categories = get_t
$args = array(
'taxonomy' => 'product_cat',
'orderby' => 'title',
'order' => 'ASC',
'child_of' => 1696,
);
$categories = get_terms( $args );
print_r($categories);
该代码为我提供了1696下的所有类别,但我只想从同样属于“男性”类别的产品中获得“类型”类别
我明白了吗
非常感谢您的帮助。由于wordpress一次只允许为参数的
子项使用一个id,因此您可以创建一个自定义数组,并为所需的每个父类运行get\u terms
从文件中:
child\u of
-(int)术语ID,用于检索的子术语如果传递了多个分类,则忽略的$child\u。默认值0
$child_cats=array();
$parent_cats=数组(1696,{另一个类别id});
$args=数组(
“分类法”=>“产品分类”,
'orderby'=>'title',
“订单”=>“ASC”,
'child\u of'=>$parent\u cat
);
foreach($parent\u cat作为$parent\u cat)
{
$child_cats=array_merge($child_cats,get_terms($args));
};
印刷品(儿童猫);
如果这就是你要找的,请告诉我 由于wordpress一次只允许一个id用于
参数的child\u,因此您可以创建一个自定义数组,并为所需的每个父类别运行get\u terms
从文件中:
child\u of
-(int)术语ID,用于检索的子术语如果传递了多个分类,则忽略的$child\u。默认值0
$child_cats=array();
$parent_cats=数组(1696,{另一个类别id});
$args=数组(
“分类法”=>“产品分类”,
'orderby'=>'title',
“订单”=>“ASC”,
'child\u of'=>$parent\u cat
);
foreach($parent\u cat作为$parent\u cat)
{
$child_cats=array_merge($child_cats,get_terms($args));
};
印刷品(儿童猫);
如果这就是你要找的,请告诉我 谢谢你的帮助,但这不是我需要的
我找到了实现我想要的东西的方法。一定有更好的办法,但我是这样做的:
我正在循环每一个产品,如果它们属于性别类别(“女性”和“男性”),我会将它们放入数组中
之后,我将对数组进行格式化,以获得这个类别结构(每个性别一个数组):数组('term_id'=>'name_id','term_id'=>'name_id','term_id'=>'name_id')
在此之后,我将遍历所有衣服类别,并查看之前创建的数组中是否存在此类别ID。如果是,我将把这个类别添加到菜单中
$args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => 1696
);
$product_cat = get_terms( $args );
// FEMME
$count_order = 100;
foreach ($product_cat as $parent_product_cat)
{
$p_id = $parent_product_cat->term_id;
if (array_key_exists($p_id, $categories_femme_formated)) {
$count_order++;
$menu_items[] = _custom_nav_menu_item( $categories_femme_formated[$p_id], get_term_link($p_id), $count_order, 11407 );
$child_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => $parent_product_cat->term_id
);
$child_product_cats = get_terms( $child_args );
$parent_order = $count_order;
foreach ($child_product_cats as $child_product_cat)
{
$c_id = $child_product_cat->term_id;
if (array_key_exists($c_id, $categories_femme_formated)) {
$count_order++;
$child_menu_id = 1000000 + $parent_order + 11407;
$menu_items[] = _custom_nav_menu_item( $categories_femme_formated[$c_id], get_term_link($c_id), $count_order, $child_menu_id );
}
}
}
}
// HOMME
$count_order = 100;
foreach ($product_cat as $parent_product_cat)
{
$p_id = $parent_product_cat->term_id;
if (array_key_exists($p_id, $categories_homme_formated)) {
$count_order++;
$menu_items[] = _custom_nav_menu_item( $categories_homme_formated[$p_id], get_term_link($p_id), $count_order, 11408 );
$child_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => $parent_product_cat->term_id
);
$child_product_cats = get_terms( $child_args );
$parent_order = $count_order;
foreach ($child_product_cats as $child_product_cat)
{
$c_id = $child_product_cat->term_id;
if (array_key_exists($c_id, $categories_homme_formated)) {
$count_order++;
$child_menu_id = 1000000 + $parent_order + 11408;
$menu_items[] = _custom_nav_menu_item( $categories_homme_formated[$c_id], get_term_link($c_id), $count_order, $child_menu_id );
}
}
}
}
为了让每个人都能理解,我在一个函数中调用了以下代码:
add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' );
这是_custom_nav_menu_菜单项功能:
function _custom_nav_menu_item( $title, $url, $order, $parent = 0 ){
$item = new stdClass();
$item->ID = 1000000 + $order + $parent;
$item->db_id = $item->ID;
$item->title = $title;
$item->url = $url;
$item->menu_order = $order;
$item->menu_item_parent = $parent;
$item->type = '';
$item->object = '';
$item->object_id = '';
$item->classes = array();
$item->target = '';
$item->attr_title = '';
$item->description = '';
$item->xfn = '';
$item->status = '';
$item->icon = '';
$item->nolink = '';
$item->hide = '';
$item->mobile_hide = '';
$item->cols = '';
$item->tip_label = '';
$item->popup_type = 'wide';
$item->popup_pos = '';
$item->popup_cols = 'col-4';
$item->popup_max_width = '';
$item->popup_bg_image = '';
$item->popup_bg_pos = '';
$item->popup_bg_repeat = '';
$item->popup_bg_size = '';
$item->popup_style = '';
$item->block = '';
$item->preview = '';
$item->preview_fixed = '';
$item->current = '';
$item->current_item_ancestor = '';
$item->current_item_parent = '';
return $item;
}
再次感谢您的帮助。:) 谢谢你的帮助,但这不是我需要的
我找到了实现我想要的东西的方法。一定有更好的办法,但我是这样做的:
我正在循环每一个产品,如果它们属于性别类别(“女性”和“男性”),我会将它们放入数组中
之后,我将对数组进行格式化,以获得这个类别结构(每个性别一个数组):数组('term_id'=>'name_id','term_id'=>'name_id','term_id'=>'name_id')
在此之后,我将遍历所有衣服类别,并查看之前创建的数组中是否存在此类别ID。如果是,我将把这个类别添加到菜单中
$args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => 1696
);
$product_cat = get_terms( $args );
// FEMME
$count_order = 100;
foreach ($product_cat as $parent_product_cat)
{
$p_id = $parent_product_cat->term_id;
if (array_key_exists($p_id, $categories_femme_formated)) {
$count_order++;
$menu_items[] = _custom_nav_menu_item( $categories_femme_formated[$p_id], get_term_link($p_id), $count_order, 11407 );
$child_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => $parent_product_cat->term_id
);
$child_product_cats = get_terms( $child_args );
$parent_order = $count_order;
foreach ($child_product_cats as $child_product_cat)
{
$c_id = $child_product_cat->term_id;
if (array_key_exists($c_id, $categories_femme_formated)) {
$count_order++;
$child_menu_id = 1000000 + $parent_order + 11407;
$menu_items[] = _custom_nav_menu_item( $categories_femme_formated[$c_id], get_term_link($c_id), $count_order, $child_menu_id );
}
}
}
}
// HOMME
$count_order = 100;
foreach ($product_cat as $parent_product_cat)
{
$p_id = $parent_product_cat->term_id;
if (array_key_exists($p_id, $categories_homme_formated)) {
$count_order++;
$menu_items[] = _custom_nav_menu_item( $categories_homme_formated[$p_id], get_term_link($p_id), $count_order, 11408 );
$child_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => $parent_product_cat->term_id
);
$child_product_cats = get_terms( $child_args );
$parent_order = $count_order;
foreach ($child_product_cats as $child_product_cat)
{
$c_id = $child_product_cat->term_id;
if (array_key_exists($c_id, $categories_homme_formated)) {
$count_order++;
$child_menu_id = 1000000 + $parent_order + 11408;
$menu_items[] = _custom_nav_menu_item( $categories_homme_formated[$c_id], get_term_link($c_id), $count_order, $child_menu_id );
}
}
}
}
为了让每个人都能理解,我在一个函数中调用了以下代码:
add_filter( 'wp_nav_menu_objects', 'my_dynamic_menu_items' );
这是_custom_nav_menu_菜单项功能:
function _custom_nav_menu_item( $title, $url, $order, $parent = 0 ){
$item = new stdClass();
$item->ID = 1000000 + $order + $parent;
$item->db_id = $item->ID;
$item->title = $title;
$item->url = $url;
$item->menu_order = $order;
$item->menu_item_parent = $parent;
$item->type = '';
$item->object = '';
$item->object_id = '';
$item->classes = array();
$item->target = '';
$item->attr_title = '';
$item->description = '';
$item->xfn = '';
$item->status = '';
$item->icon = '';
$item->nolink = '';
$item->hide = '';
$item->mobile_hide = '';
$item->cols = '';
$item->tip_label = '';
$item->popup_type = 'wide';
$item->popup_pos = '';
$item->popup_cols = 'col-4';
$item->popup_max_width = '';
$item->popup_bg_image = '';
$item->popup_bg_pos = '';
$item->popup_bg_repeat = '';
$item->popup_bg_size = '';
$item->popup_style = '';
$item->block = '';
$item->preview = '';
$item->preview_fixed = '';
$item->current = '';
$item->current_item_ancestor = '';
$item->current_item_parent = '';
return $item;
}
再次感谢您的帮助。:) 我不明白你建议的代码在做什么。而带有“'child\u of'=>$parent\u cat”的$args数组不应该在foreach循环中?基本上,它会得到一个包含所有所需子类别的数组。我们在循环中调用$args
。如果您不理解它,那没关系,一旦您获得了更多的编码经验,您就会理解它。你不必使用我提供给你的代码。还有其他方法可以做同样的事情,您可以编写两页长的代码来实现同样的事情!我不明白你建议的代码在做什么。而带有“'child\u of'=>$parent\u cat”的$args数组不应该在foreach循环中?基本上,它会得到一个包含所有所需子类别的数组。我们在循环中调用$args
。如果您不理解它,那没关系,一旦您获得了更多的编码经验,您就会理解它。你不必使用我提供给你的代码。还有其他方法可以做同样的事情,您可以编写两页长的代码来实现同样的事情!