我有服装产品。一种产品有多个类别,如“性别”(“男性”或“女性”)和“类型”(如“裤子”、“衬衫”等)。
我想列出所有类别和子类别的“类型”从产品中存在的“男子”类别。
"type"类别的ID: 1696
$args = array(
'taxonomy' => 'product_cat',
'orderby' => 'title',
'order' => 'ASC',
'child_of' => 1696,
);
$categories = get_terms( $args );
print_r($categories);
这段代码给了我1696下的所有类别,但我只想从也属于“男性”类别的产品中获得“类型”类别。
我明白了吗?
非常感谢你的帮助。
谢谢你的帮助,但这不是我需要的。
我找到了实现我想要的东西的方法。一定有更好的方法,但我是这样做的:
我循环每个产品,如果它们属于性别类别(“女性”和“男性”),就把它们放在数组中。
$categories_femme = array(); // 1718
$categories_homme = array(); // 1700
$args = array(
'post_type' => 'product',
'posts_per_page' => -1
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ): while ( $loop->have_posts() ): $loop->the_post();
global $product;
$p_id = $product->get_id();
// FEMME
if( has_term( 1718, 'product_cat' ) ) {
$categories_femme[] = wp_get_post_terms($p_id, 'product_cat');
}
// HOMME
if( has_term( 1700, 'product_cat' ) ) {
$categories_homme[] = wp_get_post_terms($p_id, 'product_cat');
}
endwhile; endif; wp_reset_postdata();
之后,我格式化数组以获得类别的结构(每个性别一个数组):数组('term_id'=
$categories_femme_formated = array();
foreach ($categories_femme as $categorie_femme) {
foreach ($categorie_femme as $categoriefemme) {
$categories_femme_formated[$categoriefemme->term_id] = $categoriefemme->name;
}
}
$categories_homme_formated = array();
foreach ($categories_homme as $categorie_homme) {
foreach ($categorie_homme as $categoriehomme) {
$categories_homme_formated[$categoriehomme->term_id] = $categoriehomme->name;
}
}
在此之后,我将遍历所有衣服类别,并查看之前创建的数组中是否存在此类别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_item函数:
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;
}
再次感谢您的帮助。:)
由于wordpress一次只允许一个id用于参数的child\u,因此您可以创建一个自定义数组,并为所需的每个父类别运行
get\u terms
。
从文件中:
child\u of
-(int)术语ID,用于检索的子术语。如果传递了多个分类法,则忽略$child\u of。默认值为0
wp\u术语\u查询
$child_cats = array();
$parent_cats = array(1696, {the other category id});
$args = array(
'taxonomy' => 'product_cat',
'orderby' => 'title',
'order' => 'ASC',
'child_of'=> $parent_cat
);
foreach ($parent_cats as $parent_cat)
{
$child_cats = array_merge($child_cats, get_terms($args));
};
print_r($child_cats);
如果这就是你要找的,请告诉我!
我试图通过WoodPress主题中的一个函数从WooCommerce获取产品类别 上面的代码返回一些产品,但是产品类别。 当我包括
我想从一个类别中获得新产品,所以我试图改变控制器。 在prestashop 1.7中 里面有这个功能 我把它改成了 但它仍在展示所有产品,而不是该类别的产品。 我决定用不同的方式, 在产品中。我写的php 在我的控制器中,我从product controller中的新函数中获取产品id,然后获取产品属性 它正在工作,但我认为与相比,操作太多了。
我正在开发一个电子商务网站,我使用三个表来管理产品和类别。 我需要一个或多个带有实体框架的linq查询来获得母类别列表、子类别列表和相关产品列表。 有一个类别表,如: Id NameCat ParentId 有一个products表,如: Id名称实时信息等。 有一个product-category表,如: Id categoryId productId sortOrder 这是我的viewmod
基于在Wordpress菜单中按名称ASC对上一个问题的答案代码中的产品类别子菜单项进行排序,我能够在Wordpress导航菜单中自动将子类别显示为某些产品类别的菜单子项。 我的问题是:是否可以隐藏空的子类别(子菜单项)? 如果可能的话,还可以隐藏只包含一个已售完产品的类别。
我至少有4个父类别,每个父类别都有一个子类别。 WordPress中的类别如下所示: > 利丁ö(父类别) Direktåtkomst Förrådslänga(子类别) 1kbm(产品) 1.5千伏安(产品) Nacka(父类别) 样本(子类别) aa(产品) bbb(产品) 我想查询WordPress中的产品,它们应该按类别分组。 这是我当前的代码: 我认为上面的代码不正确,因为每个分页都显示
对于我的WC产品页面,我需要向body标记添加一个类,以便执行一些自定义样式。这是我为这个创建的函数。。。 …但是我怎么才能拿到猫的身份证呢?