Показать термины или атрибуты продукта для определенной категории продуктов (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
(
)
)

6

Решение

var_dump показывает, что вы используете таксономии на WordPress. Хотя у меня нет опыта работы с WordPress, WordPress сайт документы сказать:

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

Начиная с 4.5.0, таксономии должны передаваться с помощью аргумента «таксономии».
в массиве $ args:

Из ссылки на функцию:

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

Дает вам термин «слизняк»: например: термин-слаг-пример

$slug = $term->slug;

Дает вам название термина: например Пример названия термина

$name = $term->name;

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

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

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

4

Другие решения

попробуйте что-то вроде этого:

<?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 } ?>
3

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

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

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

<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
По вопросам рекламы [email protected]