从完整订单中获取WooCommerce产品属性?

时间:2017-05-12 08:40:05

标签: wordpress woocommerce

我正在开发一个WooCommerce的小插件,它允许我从一个对象创建一个URL来链接到某个页面。该页面将考虑PHP GET变量并生成技术图纸。在我的主题" admin-new-order.php" 页面中,我在上面添加了以下代码,其中生成了电子邮件的订单表:

$ordered_items = $order->get_items();
foreach ( $ordered_items as $item ) {
$product_name = $item['name'];
    $product_id = $item['product_id'];
    $product_variation_id = $item['variation_id'];

    if($product_id == "1388")
    {
        if ($product_variation_id) { 
        $product = wc_get_product( $item['variation_id'] );
        var_dump($product->get_attributes());
        // Get the attributes
        // Process the attributes
        // Create URL 
        // Echo URL
        }
    }

}

如果我在上面放了一个回音,那么它会出现在电子邮件的正确位置,所以我知道代码正在按预期执行。

链接将仅由ID为" 1388"的产品生成,该产品也在测试中按预期执行。产品编号" 1388"是一个可变产品,客户可以选择材料,形状等,我也使用测量价格计算器插件,以便用户可以设置他们所需的尺寸。

问题在于

这一行
echo $product->get_attributes();

当存在这行代码时,我在尝试下订单时遇到内部服务器错误而订单不会通过。

我正在尝试从产品中获取所选属性,以便我可以将它们拼接起来并生成一个URL,将您带到一个生成技术图纸的页面。我知道这是可能的,因为电子邮件中的表格包含设置属性,但我似乎无法找到WooCommerce在何处以及如何做到这一点。

非常感谢向正确的方向发展,谢谢。

编辑:正如Reigel建议的那样,我在我的块中修改了以下代码:

    $product = wc_get_product( $item['variation_id'] );
    var_dump($product->get_attributes());

这样的var_dump产生了这个例子:

{ ["material"]=> array(6) { ["name"]=> string(8) "Material" ["value"]=> string(15) "Steel | Plastic" ["position"]=> string(1) "0" ["is_visible"]=> int(1) ["is_variation"]=> int(1) ["is_taxonomy"]=> int(0) }

如您所见,材料价值为"钢铁|塑料",我在这里选择钢铁,所以我想得到那个价值,即。用户选择的那个

1 个答案:

答案 0 :(得分:3)

尝试这样的事情:

$ordered_items = $order->get_items();
foreach ( $ordered_items as $item ) {
    $product = $order->get_product_from_item( $item );
    var_dump($product->get_attributes());
}