2016-08-22 3 views
4

Я не хочу использовать какой-либо плагин для выполнения этой задачи, поскольку недавно я столкнулся с конфликтами с аналогичным проектом, который сломал сайт. Поэтому я хочу создать эту функциональность из основ.Список терминов таксономии WooCommerce в селекторе выпадающего списка

Для выбора продуктов по бренду требуется выпадающий список на страницах категорий продуктов. В раскрывающемся списке будут показаны все бренды. Когда вы выбираете один, на сайте отображаются только те продукты, которые назначены бренду. Нам не нужно использовать встроенный в ниспадающем меню, что позволяет просматривать по новизне, цена, популярность и т.д.

Использование 'таксономии WooCommerce 'Brands я поставил свои бренды и выделенную каждому продукт бренд.

можно просмотреть массив всех марок и их атрибутов с помощью следующего кода:

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

которая выводит следующее:

Array (

[0] => WP_Term Объект ([term_id] => 978 [name] => Imari Sometsuke [slug] => imari-sometsuke [term_group] => 0 [term_taxonomy_id] => 978 [таксономия] => бренд [description] => [parent] = > 0 [count] => 1 [filter] => raw)

[1] => WP_Term Object ([term_id] => 982 [name] => Kutani [slug] => kutani [term_group] => 0 [term_taxonomy_id] => 982 [таксономия] => бренд [описание ] => [parent] => 0 [count] => 2 [filter] => raw)

[2] => WP_Term Object ([term_id] => 977 [name] => Kutani Shoza [slug] => kutani-shoza [term_group] => 0 [term_taxonomy_id] => 977 [таксономия] => бренд [description] => [parent] => 0 [count] => 4 [filter] => raw)

[3] => WP_Term Object ([term_id] => 979 [name] => Kutani Tokkuri [slug] => kutani-tokkuri [term_group] => 0 [term_taxonomy_id] => 979 [таксономия] => бренд [описание ] => [parent] => 0 [count] => 2 [filter] => raw)

[5] => WP_Term Object ([term_id] => 985 [name] => Nishikawa Sukenobu [slug] => nishikawa-sukenobu [term_group] => 0 [term_taxonomy_id] => 985 [таксономия] => brand [description] => [parent] => 0 [count] => 1 [filter] => raw)

[6] => WP_Term Object ([term_id] => 984 [name] => Shinsui Ito [slug] => shinsui-ito [term_group] => 0 [term_taxonomy_id] => 984 [таксономия] => бренд [description] => [parent] => 0 [count] => 2 [filter] => raw)

[7] => WP_Term Object ([term_id] => 976 [name] => Takeji Asano [slug] => takeji-asano [term_group] => 0 [term_taxonomy_id] => 976 [таксономия] => brand [description] => [parent] => 0 [count] => 2 [filter] => raw)

[8] => WP_Term Object ([term_id] => 980 [name] => Toshusai Sharaku [slug] => toshusai-sharaku [term_group] => 0 [term_taxonomy_id] => 980 [taxonomy] => бренд [далее] => [родитель] => 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> 

Этот код проверен и работает

Смежные вопросы