以下代码用于使用Woocommerce在我的Wordpress网站上获取“图书”类别的产品数据。
<?php
$args = array( 'post_type' => 'product', 'posts_per_page' => 200, 'product_cat' => 'books');
$loop = new WP_Query( $args );
$send_array = array();
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
$send_array[] = array(
'id' => get_the_ID(),
'title' => get_the_title(),
'content' => get_the_content(),
'regular_price' => get_post_meta( get_the_ID(), '_regular_price', true),
'sale_price'=> get_post_meta( get_the_ID(), '_sale_price', true),
'weight' => woocommerce_get_product_terms($product->id, 'weight', 'names')
);
endwhile;
wp_reset_query();
ob_clean();
echo json_encode($send_array);
exit();
?>
这样可以正常工作并正确返回数据,但weight
属性除外。
这是使用Woocommerce在我的网站中设置的自定义属性。在我的数据库中,权重属性显示在wp_woocommerce_attribute_taxonomies
表中。此表包含字段attribute_id
,attribute_name
,attribute_label
等。
我上面用来获取产品weight
值的代码不起作用。
我也试过'weight' => get_post_meta( get_the_ID(), '_weight', true)
,但它显示为空字符串(重量:“”),即使该产品在网站上有重量值。
我如何获得每个产品的重量,并将其添加到数组weight
,正如我上面所尝试的那样。
一直在做一些研究,这似乎是可行的项目。我做错了什么?
我该如何解决这个问题?
答案 0 :(得分:4)
global $product;
$product->get_weight();
答案 1 :(得分:1)
Woo Commerce函数'woocommerce_get_product_terms'返回一个数组。我并不熟悉Woo Commerce的该函数的结果,但假设它不返回多维数组,您应该将术语分配给$ send_array数组之外的变量,并尝试返回第一个项目数组。
$weight = woocommerce_get_product_terms($product->id, 'pa_weight', 'names');
然后你的数组会像这样使用$ weight变量:
$send_array[] = array(
'id' => get_the_ID(),
'title' => get_the_title(),
'content' => get_the_content(),
'regular_price' => get_post_meta( get_the_ID(), '_regular_price', true),
'sale_price'=> get_post_meta( get_the_ID(), '_sale_price', true),
'weight' => $weight[0]
);
如果这不起作用,您应该对变量执行var_dump($ weight)以查看Woo Commerce如何返回函数的结果。从该输出中,您应该能够确定用于获得所需结果的正确索引。
答案 2 :(得分:1)
这对我来说有助于减轻特定产品的重量。
$item_weight=wp_get_post_terms($post->ID, 'pa_weight', array("fields" => "names"));
$send_array[] = array(
'id' => get_the_ID(),
'title' => get_the_title(),
'content' => get_the_content(),
'regular_price' => get_post_meta( get_the_ID(), '_regular_price', true),
'sale_price'=> get_post_meta( get_the_ID(), '_sale_price', true),
'weight' => $item_weight[0]
);
这查看了循环中定义的帖子,以返回pa_weight
的属性值。
答案 3 :(得分:0)
也检查一下。
$items = WC()->cart->get_cart();
$x = 0;
foreach($items as $item => $values) {
$_product2 = $values['data'];
$getProductDetail = wc_get_product( $values['product_id'] );
echo $getProductDetail->get_image(); // accepts 2 arguments ( size, attr )
$weight = $getProductDetail->product_attributes;
echo 'Weight: '.$weight["weight"]["value"].'<br>';
}