2016-11-14 5 views
5

Я занимаюсь исследованиями по всей сети и форумам по моему вопросу, но я не могу представить правильные результаты. В основном я пытаюсь отобразить условия или атрибуты продукта только для определенной категории продукта.Показать условия или атрибуты продукта для определенной категории продуктов (woocommerce)

Вот код, над которым я работаю.

<fieldset class="liquor-types-control filter-controls" > 

    <?php 

    $terms = get_terms('wine', /*<--Product Category */ 'pa_liquor-types' /* <--Product Attribute */); 
    foreach ($terms as $term) : 
    ?> 

    <label> 
     <input type="checkbox" value="<?php echo "." . $term->slug ?>" /> 
     <?php echo $term->name ?> 
    </label> 

    <?php endforeach; ?> 


</fieldset> 


(
    [errors] => Array 
     (
      [invalid_taxonomy] => Array 
       (
        [0] => Invalid taxonomy. 
       ) 

     ) 

    [error_data] => Array 
     (
     ) 
) 
+0

Можете ли вы поделиться «var_dump ($ terms)», чтобы мы могли видеть формат данных? Кроме того, какой результат вы получаете? Любые ошибки? Обязательно установите error_reporting (E_ALL); – mseifert

+0

обновил мой вопрос с дополнительной информацией – clestcruz

ответ

3

Использование; после $ term-> slug и $ term-> name.

<label> 
     <input type="checkbox" value="<?php echo $term->slug; ?>" /> 
     <?php echo $term->name; ?> 
    </label> 
+0

Я не думаю, что это сработает – clestcruz

+0

Пожалуйста, проверьте свой код, код которого имеет ошибки. Заявление должно закончиться; и почему вы используете slug?>. Это неверно. –

+0

А также get_terms ('wine'); достаточно. –

3

попробовать что-то вроде этого:

<?php 
$terms = get_terms('wine', 'pa_liquor-types'); 

foreach($terms as $term) { ?> 
    <input type="checkbox" value="<?php echo "." . $term['slug'];?>"/> 
    <?php echo $term['name'];?> 
<?php } ?> 
+0

Пробовал ваше решение, но не повезло. – clestcruz

4

var_dump показывает, что вы используете таксономию на WordPress. Хотя у меня нет опыта непосредственно с Wordpress, the Wordpress site docs сказать:

До 4.5.0, первый параметр get_terms() был таксономия или список таксономиям:

С 4.5.0 , таксономии должны быть переданы через 'систематике' аргумент в массиве $ ARGS:

From the function reference:

$term = get_term($term_id, $taxonomy); 

Дает термин Slug: например .: термин-пробкового-пример

$slug = $term->slug; 

Дает термин имя: например, Термин Имя Пример

$name = $term->name; 

Во-первых, убедитесь, что вы используете правильную версию - вы используете синтаксис из предыдущего 4.5.0

Во-вторых, ошибка говорит о том, что систематика pa_liquor-types является недействительным. Вам нужно проверить, где это определено.

Проверьте свой синтаксис функции create_initial_taxonomies() и отправьте его, если необходимо.

0

Получите условия винного и ликерного типов отдельно, объедините их в единый массив $ terms и проведите через этот массив, чтобы получить все условия. Надеюсь, что это поможет, еще не проверил код.

<fieldset class="liquor-types-control filter-controls" > 

    <?php 
    global $post; 
    $terms_wine = get_the_terms(get_the_ID(),'wine'); 
    $terms_liquor = get_the_terms(get_the_ID,'pa_liquor-types'); 
    $terms = array(); 
    foreach($terms_wine as $wine){ 
     array_push($terms,$wind); 
     } 
    foreach($terms_liquor as $liquor){ 
     array_push($terms,$liquor); 
     } 


    foreach ($terms as $term) : 
    ?> 

    <label> 
     <input type="checkbox" value="<?php echo "." . $term->slug ?>" /> 
     <?php echo $term->name ?> 
    </label> 

    <?php endforeach; ?> 


</fieldset> 
+0

Не уверен, что у вас есть сообщение $ или нет, если не получить идентификатор текущего продукта, условия которого вы хотите перечислить и заменить $ сообщение по идентификатору продукта. – Yamu

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