Отображение условий или атрибутов продукта для определенной категории продукта (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
        (
        )
)

person clestcruz    schedule 14.11.2016    source источник
comment
Можете ли вы поделиться var_dump($terms), чтобы мы могли видеть формат данных? Кроме того, какой результат вы получаете? Есть ошибки? Обязательно установите error_reporting (E_ALL);   -  person mseifert    schedule 18.11.2016
comment
добавил в свой вопрос дополнительные сведения   -  person clestcruz    schedule 18.11.2016
comment
Вы нашли для этого решение?   -  person Oral ÜNAL    schedule 23.10.2018


Ответы (4)


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

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

Начиная с 4.5.0, таксономии следует передавать через аргумент «taxonomy» в массиве $ args:

Из справки по функциям:

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

Дает термин slug: например: term-slug-example

$slug = $term->slug;

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

$name = $term->name; 

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

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

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

person mseifert    schedule 18.11.2016

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

<?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 } ?>
person Grey    schedule 17.11.2016
comment
Пробовал ваше решение, но не повезло - person clestcruz; 17.11.2016

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

 <label> 
        <input type="checkbox" value="<?php echo $term->slug; ?>"  /> 
        <?php echo $term->name; ?>
    </label>
person Jomol MJ    schedule 14.11.2016
comment
Пожалуйста, проверьте свой код, в нем есть ошибки. Заявление должно заканчиваться на: и почему вы используете ‹? php echo. . $ term- ›slug?›. Это не так. - person Jomol MJ; 17.11.2016
comment
А также get_terms ('вино'); достаточно. - person Jomol MJ; 17.11.2016
comment
К сожалению, похоже, что это не работает, я попробовал ваше решение - person clestcruz; 17.11.2016

Получите термины типов вина и спиртных напитков по отдельности, объедините их в один массив $ 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>
person Yamu    schedule 24.11.2016
comment
Не уверен, есть ли у вас $ post или нет, если нет, получите идентификатор текущего продукта, условия которого вы хотите перечислить, и замените $ post идентификатором продукта. - person Yamu; 24.11.2016