Woocommerce在购物车页面上获取特定属性值
问题描述:
我正试图在woocommerce购物车页面中获取特定属性值。 我在表格中制作了像这样的自定义列。
Woocommerce在购物车页面上获取特定属性值
<td class="product-color" data-title="<?php esc_attr_e('Color', 'woocommerce'); ?>">
<?php
echo apply_filters('woocommerce_cart_item_price', WC()->cart->get_product_price($_product), $cart_item, $cart_item_key);
?>
</td>
<td class="product-size" data-title="<?php esc_attr_e('Size', 'woocommerce'); ?>">
<?php
echo apply_filters('woocommerce_cart_item_price', WC()->cart->get_product_price($_product), $cart_item, $cart_item_key);
?>
</td>
<td class="product-price" data-title="<?php esc_attr_e('Price', 'woocommerce'); ?>">
<?php
echo apply_filters('woocommerce_cart_item_price', WC()->cart->get_product_price($_product), $cart_item, $cart_item_key);
?>
</td>
当你看到所有的人都得到了产品价格。但我试图获得颜色和大小的属性。 我搜索,发现这个:
foreach(wc_get_product_terms($product->id, 'pa_size') as $attribute_value){
// Outputting the attibute values one by one
echo $attribute_value . '<br>';
}
我试了一下这样的:
<?php
echo apply_filters('woocommerce_cart_item_color', WC()->$product->get_attributes($_product),
$cart_item, $cart_item_key);
?>
,但没有奏效
我最新的尝试:
$test = $_product->get_attributes();
foreach($test['pa_size']['options'] as $size){
if ($size !== NULL) {
echo apply_filters('woocommerce_cart_item_price', $size , $cart_item, $cart_item_key);
var_dump($size);
} else {
echo "Not Specified";
}
}
,我得到这个结果INT(48)INT(47)
谁能帮我请。
答
如何获取购物车页面中的属性和值?
请在下面添加功能function.php文件
<?php
/**
* WooCommerce: show all product attributes listed below each item on Cart page
* ------
*/
function wp_woo_cart_attributes($cart_item, $cart_item_key) {
$item_data = $cart_item_key['data'];
$attributes = $item_data->get_attributes();
if (! $attributes) {
return $cart_item;
}
$out = $cart_item . '<br />';
foreach ($attributes as $attribute) {
// skip variations
if ($attribute->get_variation()) {
continue;
}
$name = $attribute->get_name();
if ($attribute->is_taxonomy()) {
$product_id = $item_data->get_id();
$terms = wp_get_post_terms($product_id, $name, 'all');
if (! empty($terms)) {
if (! is_wp_error($terms)) {
// get the taxonomy
$tax = $terms[0]->taxonomy;
// get the tax object
$tax_object = get_taxonomy($tax);
// get tax label
if (isset ($tax_object->labels->singular_name)) {
$tax_label = $tax_object->labels->singular_name;
} elseif (isset($tax_object->label)) {
$tax_label = $tax_object->label;
// Trim label prefix since WC 3.0
$label_prefix = 'Product ';
if (0 === strpos($tax_label, $label_prefix)) {
$tax_label = substr($tax_label, strlen($label_prefix));
}
}
$out .= $tax_label . ': ';
$tax_terms = array();
foreach ($terms as $term) {
$single_term = esc_html($term->name);
array_push($tax_terms, $single_term);
}
$out .= implode(', ', $tax_terms). '<br />';
}
}
} else {
// not a taxonomy
$out .= $name . ': ';
$out .= esc_html(implode(', ', $attribute->get_options())) . '<br />';
}
}
echo $out;
}
add_filter('woocommerce_cart_item_name', 'wp_woo_cart_attributes', 10, 2);
?>
+0
感谢您的回复。但那不是我需要的。我不想在项目下面显示属性。我想将它们显示为表格栏。 –
我在这里解决了这个问题: https://stackoverflow.com/questions/45520024/wordpress-woocommerce-product-attribute-return-key -not-value/45521680#45521680 –