7

我一直在研究整个网络和论坛关于我的问题,但我似乎无法产生正确的结果。基本上,我试图仅显示特定产品类别的条款或产品属性。

这是我一直在处理的代码。

<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
        (
        )
)
4

4 回答 4

5

var_dump表明您在 WordPress 上使用分类法。虽然我没有直接使用 Wordpress 的经验,但 Wordpress 网站文档说:

在 4.5.0 之前,get_terms() 的第一个参数是分类法或分类法列表:

从 4.5.0 开始,分类法应该通过 $args 数组中的 'taxonomy' 参数传递:

从函数参考:

$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()函数语法并在必要时发布。

于 2016-11-18T04:56:24.050 回答
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 } ?>
于 2016-11-17T08:26:13.830 回答
2

利用 ; 在 $term->slug 和 $term->name 之后。

 <label> 
        <input type="checkbox" value="<?php echo $term->slug; ?>"  /> 
        <?php echo $term->name; ?>
    </label>
于 2016-11-14T04:51:59.533 回答
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>
于 2016-11-24T08:15:20.130 回答