实际上我在产品中有自定义属性,在此之后创建搜索这些属性,我尝试显示所有属性和值,但最后没有得到
例如,实际上我有一个名为colors的属性,在这个属性中我有不同的值,红色,绿色黄色,蓝色
为了显示属性及其值,我使用此代码:
<?php global $product; $terms=get_terms('pa_colors'); print "<select>"; foreach ($terms as $each_term) { echo '<option>'.$each_term->name.'</option>'; } print "</select>"; ?>
案例是这个功能只显示我2种颜色而没有剩下的颜色,我在woocommerce后端看到我只有2个产品并且这些颜色用这个功能显示,但没有其他颜色, case它在woocommerce的后端属性我可以看到所有属性和颜色,我想要显示与后端相同但在前面,但是这个函数不让我显示这个属性的所有值,称为颜色。
如何仅使用来自属性的2种颜色,只显示这两种颜色,但不显示其他颜色。
我的问题是,如何从前面的一个属性中显示所有颜色或所有值?
The result must be this :
<select>
<option>Red</option>
<option>Green</option>
<option>Yellow</option>
<option>Blue</option>
</select>
感谢您的帮助。此致
答案 0 :(得分:2)
使用get_terms()
时,WordPress会过滤掉未附加到已发布帖子的字词(而WooCommerce会将您的产品存储为帖子)。幸运的是,WordPress将允许您防止这种情况发生。请尝试以下方法:
$options = array('hide_empty' => false);
$terms = get_terms('pa_colors', $options);
在codex中解释了许多其他选项:https://codex.wordpress.org/Function_Reference/get_terms
答案 1 :(得分:0)
使用此SQL查询获取包含详细信息的所有属性
global $wpdb;
$attribute_taxonomies = $wpdb->get_results( "SELECT * FROM " . $wpdb->prefix . "woocommerce_attribute_taxonomies WHERE attribute_name != '' ORDER BY attribute_name ASC;" );
set_transient( 'wc_attribute_taxonomies', $attribute_taxonomies );
$attribute_taxonomies = array_filter( $attribute_taxonomies ) ;
prin_r($attribute_taxonomies);
答案 2 :(得分:0)
<强>尝试:强>
function GetProductAllParamsById($_idProduct = null) {
if ( func_num_args() > 0 ) {
$result = Array();
$productAllAttr = get_post_meta( $_idProduct, '_product_attributes' );
foreach ($productAllAttr as $value) {
while (count($value) > 0) {
$_instValue = array_pop($value);
$_nameParam = $_instValue['name'];
$_nameProductAttr = wc_get_product_terms( $_idProduct, $_nameParam, array( 'fields' => 'names' ) );
array_push($result, [$_nameParam => $_nameProductAttr]);
}
}
}
return isset($result) ? $result : null;
}
示例:强>
echo "<pre>";
echo print_r( GetProductAllParamsById($id_product) );
echo "</pre>";
<强>返回强>:
Array (
[0] => Array
(
[pa_colors] => Array
(
[0] => Blue
)
)
[1] => Array
(
[pa_customer] => Array
(
[0] => someparam
[1] => sometwoparam
)
)
)