2016-08-22 121 views
4

我不希望使用任何插件来完成此任务,因为我最近与类似项目发生冲突,导致网站崩溃。所以我希望从基础知识中创建这个功能。WooCommerce品牌分类术语列表中的下拉选择器

我需要产品类别页面上的下拉列表来按品牌选择产品。下拉列表将显示所有品牌。当您选择一个网站时,网站只会显示分配给该品牌的产品。我们并不需要使用允许通过新奇,价格,人气等

查看使用我已经建立了我的品牌和分配每一个产品一个品牌 WooCommerce 'Brands'分类内置下拉。

我可以查看的所有品牌的阵列以及它们与下面的代码属性:

$brands = get_terms('brand'); 
print_r($brands); 

哪个输出以下:

阵列(

[0] => WP_Term对象([term_id] => 978 [name] => Imari Sometsuke [slug] => imari-sometsuke [term_group] => 0 [term_taxonomy_id] => 978 [taxonomy] => brand [description] => [parent] = > 0 [count] => 1 [filter] => raw)

[1] => WP_Term对象([term_id] => 982 [name] => Kutani [slug] => kutani [term_group] => 0 [term_taxonomy_id] => 982 [taxonomy] => brand [description ] => [parent] => 0 [count] => 2 [filter] => raw)

[2] => WP_Term对象([term_id] => 977 [name] => Kutani Shoza [slug] => kutani-shoza [term_group] => 0 [term_taxonomy_id] => 977 [taxonomy] => brand [description] => [parent] => 0 [count] => 4 [filter] => raw)

[3] => WP_Term对象([term_id] => 979 [name] => Kutani Tokkuri [slug] => kutani-tokkuri [term_group] => 0 [term_taxonomy_id] => 979 [taxonomy] => brand [description ] => [parent] => 0 [count] => 2 [filter] => raw)

[5] => WP_Term对象([term_id] => 985 [name] => Nishikawa Sukenobu [slug] => nishikawa-sukenobu [term_group] => 0 [term_taxonomy_id] => 985 [taxonomy] =>品牌[description] => [parent] => 0 [count] => 1 [filter] => raw)

[6] => WP_Term Object([term_id] => 984 [name] => [slug] => shinsui-ito [term_group] => 0 [term_taxonomy_id] => 984 [taxonomy] => brand [description] => [parent] => 0 [count] => 2 [filter] => raw)

=> WP_Term对象([term_id] => 976 [name] => Takeji Asano [slug] => takeji-asano [term_group] => 0 [term_taxonomy_id] => 976 [taxonomy] => brand [description] => [parent] => 0 [count] => 2 [filter] => raw)

[8] => WP_Term对象([term_id] => 980 [name] => Toshusai Sharaku [slug] => toshusai-sharaku [term_group] => 0 [term_taxonomy_id] => 980 [分类法] =>品牌[描述] => [父] => 0 [数] => 3 [过滤] =>原始)

一个会如何构建的下拉(选择)列表来创建这个? 我想也是的框架是这样的,我已经开始:

<?php 
$brands = get_terms('brand'); 
//print_r($brands); 
?> 

<select name="orderby" class="orderby"> 
    <?php foreach ($brands as ???) : ?> 
     <option value="<?php echo esc_attr($???); ?>" <?php selected($orderby, $???); ?>><?php echo esc_html($???); ?></option> 
    <?php endforeach; ?> 
</select> 

回答

2

正如你可以看到它的长期目标(WP_Term对象)的数组,你必须使用对象语法对于这个词的每个属性,在循环中,这种方式:

<?php 

    $brands = get_terms('brand', array(
     'orderby' => 'name' // orderby arguments ('name', 'slug','term_group', 'term_id', 'id', 'description') 
    )); 
    //print_r($brands); 

?> 
<select name="orderby" class="orderby"> 
    <?php 
     foreach ($brands as $key => $brand) : 
      $brand_id = $brand->term_id; 
      $brand_name = $brand->name; 
      $brand_slug = $brand->slug; 
      $brand_term_group = $brand->term_group; 
      $brand_term_taxonomy = $brand->term_taxonomy_id; 
      $brand_taxonomy = $brand->taxonomy; 
      $brand_description = $brand->description; 
      $brand_parent = $brand->parent; 
      $brand_count = $brand->count; 
      $brand_filter = $brand->filter; 

      $number = $key+1; 
      $option = 'option-' . $number; 
    ?> 
     <option value="<?php echo $option; ?>"><?php echo $brand->name; ?></option> 
    <?php endforeach; ?> 
</select> 

该代码测试和工程