Show subChild categories

时间:2021-10-09 作者:carlozsan


Targets : Show Locations (sub-districts & cities) on the customized shop page & on tab additional information - Show on line 5

我正在用wordpress和woocommerce建立一个房产网站。

我国有7个岛屿、34个省、514个市、7041个区、82194个街道。

然后,我将数据分组并将其添加到:

在类别上

核实(父母)出售(父母)租金(父母)岛1(父母)省1(子女)市1(子子女)市#2(子孩子)岛#7(父母)省#34(孩子)市#514(子孩子)岛关于产品属性:

pa\\U地区:城市(514)

巴库卡马坦:地区(7041)

巴鲁洛卡西:分区(82194)

因此,我可以根据需要定制商店页面looks like this.

在附加信息选项卡中,我还添加了街道和城市looks like this.

我还使用永久链接显示链接,例如:

https://mydomain/product-categories/island1/provinces3/cities8(类别)

https://mydomain/product-categories/island5/provinces1/cities12(类别)

https://mydomain/districts1492(pa\\U属性)

https://mydomain/districts5630(pa\\U属性)

https://mydomain/subdistricts11596(pa\\U属性)

https://mydomain/subdistricts52630(pa\\U属性)

到目前为止,一切似乎都很好。

当我创建了一个演示站点(当前产品数量为10k)时,我的想法改变了

开始感觉到输入/选择属性时加载缓慢
(我知道其中一个原因是CPU、RAM/主机)。

这让我想到是否只在一个地方展示城市
(如类别中的城市或产品属性中的城市)可以帮助减少服务器负载吗?

如果我误解了,请纠正我。

但如果这是真的,我使用的第一种方法是删除类别中的城市,并将城市保存在产品属性中。

然而,这将缩小范围,例如:

之前:

https://mydomain/product-categories/island1/provinces3/cities8(类别)

https://mydomain/product-categories/island5/provinces1/cities12(类别)

将是:

https://mydomain/product-categories/island1/provinces3/(类别)

https://mydomain/product-categories/island5/provinces1/(类别)

要继续显示相同的内容,我可以将永久链接编辑为:

https://mydomain/product-categories/island1/provinces3/&;cities8(类别和pa\\U区域)

https://mydomain/product-categories/island5/provinces1/&;城市12(类别和pa\\U区)

但这样我就已经走对了吗?

与此同时,如果我使用第二种方法,即从产品属性中删除城市,我在商店页面和附加信息选项卡上显示城市信息时会遇到问题。

到目前为止的成就是在下面的代码段中添加了view like this.

当产品只有以下类别时:

岛(父)省(子)市(子)视图运行良好(鲁玛集群Pondok Aren)。

但是,当产品具有以下类别时:

已验证(父)

  • 岛(父)
      省(子)
      • 市(子孩子)
                • 显示的是已验证类别,而不是城市(Daerah Cileungsi Townhouse Premium)。

                  我错过了什么?

                  除此之外,我也不知道如何在“附加信息”选项卡上显示这些子孩子类别<我被困在这里好几天了,所以请帮我摆脱这个麻烦。。。非常感谢

  • 3 个回复
    最合适的回答,由SO网友:tiago calado 整理而成

    仅深入了解代码,但这应该给出与产品相关的类别

    $sub_child = $product->get_categories();
    foreach($sub_child as $a){
       echo $a;
    }
    
    如果这给了子级、子级和父级,那么必须构建某种过滤器来仅显示子级。

    对于街道,我想象如下:

    $district = $product->get_attribute(\'pa_district\');
    $sub_district = pa_sub-district($district);
    foreach($sub_district as $a){
       echo $a;
    }
    

    SO网友:tiago calado

    检查此代码是否有助于您

    $cats = $product->get_categories();
    $cities = [];
    foreach ($cats as $key => $cat):
        if ($cat->parent == 0):
            foreach ($cats as $key => $cat2):
                if ($cat2->parent == $cat->term_id):
                    foreach ($cats as $key => $cat3):
                        if ($cat3->parent == $cat2->term_id):
                            array_push($cities, $cat3->name);
                        endif;
                    endforeach;
                endif;
            endforeach;
        endif;
    endforeach;
    
    foreach($cities as $city){
      echo $city.\'<br>\';
    } 
    
    也许上面的代码可以回答你的问题,但是如果没有,我需要这个代码的结果

    $cats = $product->get_categories();
    echo \'<pre>\';
    print_r($cats);
    echo \'</pre>\';
    die();
    

    SO网友:tiago calado

    此代码适用于单个产品。php(单一产品页面)。我已经按照您的图表构建了代码

    岛(父)省(子)市(子)这意味着假设城市为三级类别。

    global $post;
    $cats = get_the_terms( $post->ID, \'product_cat\' );
    $count = 0;
    foreach ($cats as $parent){
      if($parent->parent == 0){
        foreach($cats as $child){
          if($child->parent == $parent->term_id){
            foreach($cats as $subChild){
              if($subChild->parent == $child->term_id){
                if($count){echo \', \';}
                echo $subChild->name;
                $count += 1;
              }
            }
          }
        }
      }
    }
    
    全球$员额;只是为了确保它能正常工作,但尝试一下,一旦你的代码能够正常工作,它可能也能正常工作。

    如果你确信这个城市永远是一个不需要昏迷的城市,那么它可以在没有昏迷的情况下使用。

    $cats = get_the_terms( $post->ID, \'product_cat\' );
    foreach ($cats as $parent){
      if($parent->parent == 0){
        foreach($cats as $child){
          if($child->parent == $parent->term_id){
            foreach($cats as $subChild){
              if($subChild->parent == $child->term_id){
                echo $subChild->name;
              }
            }
          }
        }
      }
    }
    

    相关推荐

    如何从unction.php中排除Get_Categories返回的类别?

    我有一个插件,可以创建我的网站地图。它首先获取所有类别get_categories 然后获取每个页面的所有页面。但是,我有一个类别不能包含在插件代码中:$args[\'exclude\']=2; $cats = get_categories( $args ); 问题是,如果插件替换文件,我的修改将被删除,我尝试了以下方法:function exclude_cat($taxonomy, $args) { $args[\'exclude\']=2;