首页 > 解决方案 > 如何在每个循环中显示产品属性名称而不是 slug?

问题描述

我有一个属性循环并试图在<select>下拉列表的第一个选择中显示属性名称。但是每次我回显这个名字时,都会显示 slug。所以pa_attribute_metal显示的是“”而不是“金属”。

下面是我当前的循环和我当前使用的代码。显然$attribute['name']不是拉实际名称。

$attributes = $product->get_attributes();

foreach ($attributes as $attribute):

   echo '<select name="'.$attribute['name'].'" class="example">';
   echo '<option name="'.$attribute['name'].'">'.$attribute['name'].'</option>';
   echo '</select>';

endforeach;

通过每个循环提取属性的实际显示名称并将其显示在中的最佳方法是什么<option>

标签: phphtmlwordpresswoocommercewoocommerce-theming

解决方案


<select name="attribute_taxonomy" class="attribute_taxonomy">
    <option value=""><?php esc_html_e('product attribute', 'woocommerce'); ?></option>
    <?php
    global $wc_product_attributes;

    // Array of defined attribute taxonomies.
    $attribute_taxonomies = wc_get_attribute_taxonomies();

    if (!empty($attribute_taxonomies)) {
        foreach ($attribute_taxonomies as $tax) {
            $attribute_taxonomy_name = wc_attribute_taxonomy_name($tax->attribute_name);
            $label = $tax->attribute_label ? $tax->attribute_label : $tax->attribute_name;
            echo '<option value="' . esc_attr($attribute_taxonomy_name) . '">' . esc_html($label) . '</option>';
        }
    }
    ?>
</select>

推荐阅读