从Wordpress获得产品重量

时间:2014-02-10 03:35:41

标签: php wordpress woocommerce

以下代码用于使用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_idattribute_nameattribute_label等。

我上面用来获取产品weight值的代码不起作用。

我也试过'weight' => get_post_meta( get_the_ID(), '_weight', true),但它显示为空字符串(重量:“”),即使该产品在网站上有重量值。

我如何获得每个产品的重量,并将其添加到数组weight,正如我上面所尝试的那样。

一直在做一些研究,这似乎是可行的项目。我做错了什么?

我该如何解决这个问题?

4 个答案:

答案 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>';
}