【问题标题】:How to display Product Attribute name instead of slug in each loop?如何在每个循环中显示产品属性名称而不是 slug?
【发布时间】:2019-02-12 11:38:55
【问题描述】:

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

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

【问题讨论】:

  • 是否有必要在循环内使用echo '&lt;select name="'.$attribute['name'].'" class="example"&gt;';?调试,print_r($attributes) foreach 开始前并分享结果
  • 使用多个下拉菜单,因为产品页面中有多个属性。因此,foreach 中的&lt;select&gt;
  • @devpro 这里是打印: Array ( [pa_attribute-metal] => WC_Product_Attribute Object ( [data:protected] => Array ( [id] => 1 [name] => pa_attribute-metal [选项] => 数组([0] => 28 [1] => 29 [2] => 27 [3] => 26)[位置] => 1 [可见] => 1 [变体] =>) ) )
  • 你的代码 100% 没问题,检查 ` [name] => pa_attribute-metal` 你在这里没有名字
  • 我认为$product-&gt;get_attributes() 应该是$_product-&gt;get_attributes() 不是吗?

标签: php html wordpress woocommerce woocommerce-theming


【解决方案1】:
<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>

【讨论】:

    【解决方案2】:
       while ($query->have_posts()) {
          $query->next_post();
          $result[] = $query->post;
          $taxonomy = 'pa_size';
          $meta = get_post_meta($result[$i]->ID, 'attribute_'. $taxonomy, true);
          $term = get_term_by('slug', $meta, $taxonomy);
          array_push($arrayValue, $term);
      }
      for ($j = 0; $j<count($arrayValue); $j++){
         echo $arrayValue[$j]->name;
      }
    

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 2021-06-13
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多