当前位置: 首页 > 知识库问答 >
问题:

在WooCommerce中获取产品自定义域值作为变量

曾涵育
2023-03-14

我不只是想用钩子添加所有的自定义元数据,因为我需要对输出进行非常严格的控制。例如,对于在购物车页面中包含自定义域,下面的答案可以很好地工作:在Woocommerce购物车中显示自定义域的值&Checkout items

但我也希望它们出现在结帐、订单详细信息和电子邮件中,并完全控制它们出现的HTML(在某些情况下,它们也需要转换,例如,Unix时间戳转换为人类可读的时间)。

order-item-details.php模板中,我尝试了以下操作:

$room = get_post_meta( $product->ID, 'room', true );
$room_number = get_post_meta( $product->ID, 'room_number', true );
$instructor = get_post_meta( $product->ID, 'instructor', true );

echo 'Your instructor is ' . $instructor . '.';
echo 'Your class is in ' . $room . '.';

如何访问和使用与特定产品关联的自定义域值?

共有1个答案

徐高懿
2023-03-14

第一个$product->id将无法工作。所以您的问题是如何获得产品ID。

多例

1)在存档页面(如shop)或单品页面中:

$room = get_post_meta( get_the_id(), 'room', true );
global $product;

$room = get_post_meta( $product->get_id(), 'room', true );
global $post;

$room = get_post_meta( $post->ID, 'room', true );

2)对于购物车项目(来自购物车对象):

// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item ){
    // Get the WC_Product object (instance)
    $product = $cart_item['data'];
    $product_id = $product->get_id(); // get the product ID

    $room = get_post_meta( $product->get_id(), 'room', true );
    ## … / … 
}

>

  • 现在对于产品变体,如果您需要获取父变量产品ID,您将使用:

    // Get the parent product ID (the parent variable product)
    $parent_id = $cart_item['product_id'];
    
    $room = get_post_meta( $parent_id, 'room', true );
    ## … / … 
    

    3)对于订单项目(来自已定义的WC_Order对象$order):

    // Loop through cart items
    foreach( $order->get_items() as $item ){
        // Get the Product ID
        $product_id = $item->get_product_id();
    
        $room = get_post_meta( $product_id, 'room', true );
        ## … / … 
    }
    
    // Loop through cart items
    foreach( $order->get_items() as $item ){
        // Get the parent Product ID
        $product = $item->get_product();
        $parent_id = $product->get_parent_id(); // The parent product ID
    
        $room = get_post_meta( $parent_id, 'room', true );
        ## … / … 
    }
    

  •  类似资料:
    • 我试图显示从x-x的变化自定义价格跨度。 null

    • 问题内容: 在Woocommerce中,我试图获取产品自定义属性值,但我失败了,我一无所获。 所以我尝试了: 我正在获取这些原始数据: 我知道有一个值,因为它显示在属性部分,但是我只是找不到一种方法来将其显示在我的自定义代码中。 问题答案: 编辑* : 自Woocommerce版本3起已弃用 * 按照@datafeedr在他的答案中写道: 甚至更紧凑: 原始答案:

    • 在WooCommerce中,我试图获得产品自定义属性值,但我失败了,什么也得不到。 所以我试着: 我得到了这些原始数据: 我知道有一个值,因为它显示在属性部分,但我就是找不到一种方法用我的自定义代码显示它。

    • 我试图在woocommerce中获得一个特定的自定义属性。我在这个网站上读了很多文章,其中提供了3-5种方法。在尝试了所有方法之后,对我来说唯一有效的方法就是循环所有属性——所有其他属性都不起作用。我有一个名为“pdfs”的自定义属性 以下尝试不起作用:(链接) 这是唯一的一个工作:(链接) 我更希望能够使用第一个选项之一。任何帮助都将不胜感激。谢谢

    • 这就是我如何为产品变体添加管理自定义字段的方法: 保存产品变化的自定义字段保存: 将自定义字段值存储到变量数据中 该值保存并显示在单个产品页面中,但下面的函数不返回该值 尝试检索函数中自定义字段的值: 我需要得到的只是值(这是浮点数):

    • 当我进入产品编辑页面时,有一个选项卡“属性”。在那里我可以设置属性名及其值。 我假设这就是在Woocommerce上为产品添加自定义属性的方式。 但是如何在循环中得到这个值呢? 我看到人们使用,但它希望我传递分类法和另一个参数数组。分类学是什么?我没有手动添加。论点是什么?