英文:
How to get WooCommerce attribute label and id from slug name in WordPress?
问题
我有一个属性:
- 名称(label):盒子尺寸
- 标识:box-size
我尝试了这段代码:
$attribute_slug = 'pa_box-size';
// 根据属性标识获取术语对象
$term = get_term_by('slug', $attribute_slug, 'pa');
if ($term) {
$attribute_label = $term->name; // 属性标签
$attribute_id = $term->term_id; // 属性ID
// 输出属性标识和ID
echo '属性标识:' . $attribute_slug . '<br>';
echo '属性标签:' . $attribute_label . '<br>';
echo '属性ID:' . $attribute_id;
} else {
echo '未找到属性:' . $attribute_slug;
}
但始终得到 "未找到属性: pa_box-size"。
英文:
I have an attribute:<br>
- Name(label): Box Size
- Slag: box-size
I tried this code:
$attribute_slug = 'pa_box-size';
// Get the term object based on the attribute slug
$term = get_term_by('slug', $attribute_slug, 'pa');
if ($term) {
$attribute_label = $term->name; // Attribute label
$attribute_id = $term->term_id; // Attribute ID
// Output the attribute label and ID
echo 'Attribute Slug: ' . $attribute_slug . '<br>';
echo 'Attribute Label: ' . $attribute_label . '<br>';
echo 'Attribute ID: ' . $attribute_id;
} else {
echo 'Attribute not found: ' . $attribute_slug;
}
But got always "Attribute not found: pa_box-size".
答案1
得分: 0
我用以下方式解决了我的问题:
$output = '<ul style="list-style:none;">';
// 遍历所有的Woocommerce产品属性
foreach (wc_get_attribute_taxonomies() as $attribute) {
$attribute_label = $attribute->attribute_label; // 产品属性名称
$attribute_slug = $attribute->attribute_name; // 产品属性别名
$attribute_id = $attribute->attribute_id; // 属性ID
$output .= '<li class="' . $attribute_slug . '" data-id="' . $attribute_id . '">'
. $attribute_label . '</li>';
}
// 输出
echo $output.'</ul>';
来源:wordpress.stackexchange.com
所以,我只需要一个IF语句来检查特定的属性。
英文:
I solved my problem with this:
$output = '<ul style="list-style:none;">';
// Loop through all Woocommerce product attributes
foreach (wc_get_attribute_taxonomies() as $attribute) {
$attribute_label = $attribute->attribute_label; // Product attribute name
$attribute_slug = $attribute->attribute_name; // Product attribute slug
$attribute_id = $attribute->attribute_id; // Attribute ID
$output.= '<li class="'.$attribute_slug.'" data-id="'.$attribute_id.'">'
.$attribute_label.'</li>';
}
// Output
echo $output.'</ul>';
Source: wordpress.stackexchange.com
So I will just need an IF statement to check a specific attribute.
答案2
得分: -1
你可以尝试这段代码。
$attribute_slug = 'color'; // 用你的属性别名替换这里
$product_attributes = wc_get_attribute_taxonomies();
foreach ($product_attributes as $product_attribute) {
if ($product_attribute->attribute_name === $attribute_slug) {
$attribute_label = $product_attribute->attribute_label;
$attribute_id = $product_attribute->attribute_id;
echo '属性标签: ' . $attribute_label . '<br>';
echo '属性ID: ' . $attribute_id;
break;
}
}
请注意,我已经将代码中的HTML实体字符(如>
和<
)还原为正常的PHP代码,以便更好地理解。
英文:
You can try this code.
$attribute_slug = 'color'; // Replace with your attribute slug
$product_attributes = wc_get_attribute_taxonomies();
foreach ($product_attributes as $product_attribute) {
if ($product_attribute->attribute_name === $attribute_slug) {
$attribute_label = $product_attribute->attribute_label;
$attribute_id = $product_attribute->attribute_id;
echo 'Attribute Label: ' . $attribute_label . '<br>';
echo 'Attribute ID: ' . $attribute_id;
break;
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论