【问题标题】:Woocommerce for each attribute loop每个属性循环的 Woocommerce
【发布时间】:2020-07-12 09:58:48
【问题描述】:

如何输出 woocommerce 产品的变体属性,其中每个属性都在单独的 div 中?

add_action( 'woocommerce_after_shop_loop_item_title', 'display_color_attribute', 5 );
    function display_color_attribute() {
        global $product;

        if ( $product->is_type('variable') ) {
            $taxonomy = 'pa_color';
            echo '<span class="attribute-color">' . $product->get_attribute($taxonomy) . '</span>';
        }
    }

这里输出产品页面上的两种颜色,用逗号分隔,因此对于一个产品,它可能是:

<span class="attribute-color">Black, Brown</span>

我想要在两个单独的 div 中输出这两种颜色,如下所示:

<span class="attribute-color black">Black</span>
<span class="attribute-color brown">Brown</span>

这可行吗?

【问题讨论】:

  • $product-&gt;get_attribute($taxonomy) 返回什么值类型?

标签: php html wordpress woocommerce


【解决方案1】:

我怀疑 $product-&gt;get_attribute($taxonomy); 返回一个数组,所以你需要像下面这样循环它:

add_action( 'woocommerce_after_shop_loop_item_title', 'display_color_attribute', 5 );
function display_color_attribute() {
    global $product;

    if ( $product->is_type('variable') ) {
        $taxonomy = 'pa_color';
        $colors = $product->get_attribute($taxonomy);
        foreach ($colors as $color) {
            echo '<span class="attribute-color '. strtolower($color) .'">' . $color . '</span>';
        }   
    }
}

【讨论】:

  • 谢谢老兄!然而,它只适用于爆炸,就像其他答案建议的那样:)
【解决方案2】:

1.通过查看您的代码以及基于get_attribute() details,您实际上得到了一个逗号分隔的字符串。

2.So explode() 将其转换为数组并循环遍历它,如下所示:

add_action( 'woocommerce_after_shop_loop_item_title', 'display_color_attribute', 5 );
function display_color_attribute() {
    global $product;

    if ( $product->is_type('variable') ) {
        $taxonomy = 'pa_color';
        $colors = explode(',',$product->get_attribute($taxonomy));
        foreach ($colors as $color) {
            echo '<span class="attribute-color '. strtolower(trim($color)) .'">' . trim($color) . '</span>';
        }   
    }
}

参考:-

explode()

strtolower()

trim()

【讨论】:

  • @J.Doe 很高兴为您提供帮助:):)
  • 能不能加这个:
    example.com/?attribute_pa_color=(show color attribute)">
    其中“显示颜色属性”显示例如“棕色”或其他颜色:)?就像你刚刚对我的 div 所做的那样?
  • @J.Doe 是的,你可以
  • 你能帮我做吗?
猜你喜欢
  • 2017-07-06
  • 2021-03-11
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多