Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从WooCommerce中的父类别中获取与当前产品关联的相关子类别_Php_Wordpress_Woocommerce_Product_Taxonomy Terms - Fatal编程技术网

Php 从WooCommerce中的父类别中获取与当前产品关联的相关子类别

Php 从WooCommerce中的父类别中获取与当前产品关联的相关子类别,php,wordpress,woocommerce,product,taxonomy-terms,Php,Wordpress,Woocommerce,Product,Taxonomy Terms,这并不是一个重复的问题,然而,wordpress.stackexchange论坛似乎对此保持沉默。。。我希望有人能帮忙 我的以下链接是指: 我正忙于一个音乐网站。情况如下: 一首歌(WooCommerce产品),有一个“摇滚”类别,摇滚是“流派”的一个子类别 流派类别有许多不同的子类别(摇滚、流行、古典等) 这些类别是在将产品导入WooCommerce时设置的,初始导入CSV中的类别字符串如下所示(我使用虚拟数据进行开发): 体裁,体裁>摇滚,艺术家,艺术家>阿比盖尔·杰伊>绿巨人依靠体重,专辑

这并不是一个重复的问题,然而,wordpress.stackexchange论坛似乎对此保持沉默。。。我希望有人能帮忙

我的以下链接是指:

我正忙于一个音乐网站。情况如下:

  • 一首歌(WooCommerce产品),有一个“摇滚”类别,摇滚是“流派”的一个子类别
  • 流派类别有许多不同的子类别(摇滚、流行、古典等)
  • 这些类别是在将产品导入WooCommerce时设置的,初始导入CSV中的类别字符串如下所示(我使用虚拟数据进行开发):
  • 体裁,体裁>摇滚,艺术家,艺术家>阿比盖尔·杰伊>绿巨人依靠体重,专辑>绿巨人依靠体重,年份,年份>2014

    在上面的例子中,摇滚是流派的一个子类别

    通过以下代码,我得到了“流派”下列出的所有子类别:

    global$产品;
    $terms=get_the_terms($product->get_id(),'product_cat');
    foreach($terms作为$term)
    {
    如果($term->slug==“流派”)
    {
    $\u id=$term->term\u id;
    $\u s=$term->slug;
    $\u ar=array('parent'=>$\u id);
    $assoc\u categories=获取术语('product\u cat',$\u ar);
    }
    }
    
    然而,这是不正确的。我试图做的(而不是赢得)是通过php获得与当前产品相关联的相关子类别(例如Rock)。换句话说,我需要看看哪一个子类别的流派与产品相关

    我可能错过了一些小东西,但是这让我忙了好一阵子。。。任何帮助都将不胜感激


    编辑:


    好的,我想出了一个大概的方法来获得我需要的东西,并更新了我的代码,如下所示:

    global$产品;
    $terms=get_the_terms($product->get_id(),'product_cat');
    $_x=array();
    foreach($terms作为$term)
    {
    如果($term->slug==“流派”)
    {
    $\u id=$term->term\u id;
    $\u s=$term->slug;
    $\u ar=array('parent'=>$\u id);
    $assoc\u categories=获取术语('product\u cat',$\u ar);
    foreach(以$的形式获取术语('产品类别',$))
    {
    $genre\u dict[]=$\u gt->name;
    }
    }
    if(在数组中($term->name,$genre\u dict))
    {
    echo($term->name);
    }
    }
    
    对上述内容的简要说明:

  • 我创建了一个名为
    $genre\u dict
    的数组,其中包含类别genre中包含的所有子类别
  • 然后,我将
    $term->name
    $genre\u dict
    中的每个条目进行比较,如果找到匹配项,我将输出
    $term->name

  • 有没有更好的方法来达到同样的效果?

    好的,我想出了一个大概的方法来获得我需要的东西,并更新了我的代码,如下所示:

    global$产品;
    $terms=get_the_terms($product->get_id(),'product_cat');
    $_x=array();
    foreach($terms作为$term)
    {
    如果($term->slug==“流派”)
    {
    $\u id=$term->term\u id;
    $\u s=$term->slug;
    $\u ar=array('parent'=>$\u id);
    $assoc\u categories=获取术语('product\u cat',$\u ar);
    foreach(以$的形式获取术语('产品类别',$))
    {
    $genre\u dict[]=$\u gt->name;
    }
    }
    if(在数组中($term->name,$genre\u dict))
    {
    echo($term->name);
    }
    }
    
    对上述内容的简要说明:

  • 我创建了一个名为
    $genre\u dict
    的数组,其中包含类别genre中包含的所有子类别
  • 然后,我将
    $term->name
    $genre\u dict
    中的每个条目进行比较,如果找到匹配项,我将输出
    $term->name
  • 编辑

    我创建了一段更全面的代码,构建了一个包含以下内容的数组:

    • 艺人姓名、ID、Slug>
      • 每张专辑名称、ID、Slug、年份、流派>
        • 每首歌曲的名称、ID、Slug、SKU和指向曲目预览的链接
    if((!empty($\u SERVER['HTTPS'])和&$\u SERVER['HTTPS']!='off')|$\u SERVER['SERVER\u PORT']==443)
    {
    $GLOBALS['base_href']='https://'。$\u SERVER['SERVER_NAME'].//';
    }
    其他的
    {
    $GLOBALS['base_href']='http://'。$\u SERVER['SERVER_NAME'].//';
    }//结束:如果(!empty($\u服务器['HTTPS'。。。
    $main_category=get_queryed_object();
    $main\u category\u id=$main\u category->term\u id;
    $main\u category\u name=$main\u category->name;
    $main\u category\u slug=$main\u category->slug;
    foreach(获取术语('product_cat',$main_category_id)作为$term)
    {
    如果($term->slug==“流派”)
    {
    foreach(以$的形式获取术语('product\u cat',['parent'=>$term->term\u id]))
    {
    $genre\u dict[]=$\u gt->name;
    }
    }//结束:if($term->slug==“流派”。。。
    如果($term->slug==“年”)
    {
    foreach(以$的形式获取术语('product\u cat',['parent'=>$term->term\u id]))
    {
    $year\u dict[]=$\u gt->name;
    }
    }//结束日期:如果($term->slug==“年”。。。
    }//结束:foreach(获取术语('product\u cat',$sub\u category\u id…)。。。
    $\u艺术家\u对象=
    [
    “艺术家id”=>$main\u category->term\u id,
    “艺术家名称”=>$main\u category->name,
    “艺术家”slug=>$main\u类别->slug
    ];
    foreach(获取术语('product_cat',['parent'=>$main_category_id])作为$sub_category)
    {
    $sub_category_id=$sub_category->term_id;
    $sub_category_name=$sub_category->name;
    $sub_category_slug=$sub_category->slug;
    $\u艺人\u OBJ['艺人\u专辑][$sub\u分类->slug]=
    [
    'album_id'=>$sub_category->term_id,
    “唱片集名称”=>$sub\u category->name,
    'album_slug'=>$sub_category->slug,
    “专辑年”=>“”,
    “专辑类型”=>“”,
    'album_artwork'=>$GLOBALS['base_href']。'wp-content/uploads/album_images/'。$sub_category->slug..jpg',
    “唱片集曲目”=>[]
    ];
    $produc