显示特定产品类别的术语或产品属性(woocommerce)

Posted

技术标签:

【中文标题】显示特定产品类别的术语或产品属性(woocommerce)【英文标题】:Display the terms or product attributes for a specific product category(woocommerce) 【发布时间】:2017-03-27 15:45:07 【问题描述】:

我一直在网上和论坛上就我的问题进行研究,但似乎无法得出正确的结果。基本上,我试图仅显示特定产品类别的条款或产品属性。

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

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

【问题讨论】:

你能分享一个var_dump($terms) 以便我们查看数据的格式吗?另外,你得到什么输出?有什么错误吗?确保设置 error_reporting(E_ALL); 用更多细节更新了我的问题 您找到解决方案了吗? 【参考方案1】:

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:例如:term-slug-example

$slug = $term->slug;

为您提供术语名称:例如术语名称示例

$name = $term->name; 

首先,确保您使用的是正确的版本 - 您使用的是 4.5.0 之前的语法

其次,错误是说分类法pa_liquor-types 无效。您需要检查这是在哪里定义的。

检查您的 create_initial_taxonomies() 函数语法并在必要时发布。

【讨论】:

【参考方案2】:

试试这样的:

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

【讨论】:

请检查您的代码,您的代码有错误。该语句应以 ; 结尾以及为什么要使用 蛞蝓?>。这是不正确的。 还有 get_terms('wine');够了。 不幸的是它似乎不起作用,我尝试了您的解决方案【参考方案4】:

分别获取葡萄酒和烈酒类型的术语,将它们合并到单个数组 $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>

【讨论】:

不确定您是否有 $post,如果没有,则获取要列出其条款的当前产品的 id,并将 $post 替换为产品的 id。

以上是关于显示特定产品类别的术语或产品属性(woocommerce)的主要内容,如果未能解决你的问题,请参考以下文章

隐藏产品价格并禁用 Woocommerce 中特定产品类别的添加到购物车

WooCommerce 中特定产品类别的最低购物车数量

删除 Woocommerce 中特定产品类别的添加购物车按钮

特定产品类别的强制性优惠券,避免在 Woocommerce 中结帐

在 WooCommerce 中最后对特定产品类别的购物车项目进行排序

替换产品类别的 Woocommerce 单一产品页面上的“添加到购物车”按钮