Gun*_*irl 5 php wordpress product custom-fields woocommerce
我正在使用Woocommerce注册课程; 每个类/产品最多有20个自定义字段,我需要将其作为变量返回,以便高度自定义结帐和订单详细信息页面以及客户电子邮件模板.
我不只是想用钩子添加所有自定义元数据,因为我需要非常严格地控制输出.例如,以下答案适用于在购物车页面中包含自定义字段: 在Woocommerce购物车和结帐项目中显示自定义字段的值
但我希望他们在结账时,订购详细信息和电子邮件,完全控制它们出现的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 . '.';
Run Code Online (Sandbox Code Playgroud)
但它不起作用......
如何访问和使用与特定产品关联的自定义字段值?
Loi*_*tec 12
首先$product->ID不会以任何方式工作.所以你的问题是如何获得产品ID.
多个案例
1)在商店或单个产品页面的存档页面中:
使用get_the_id()将主要给你产品ID(帖子ID)
$room = get_post_meta( get_the_id(), 'room', true );
Run Code Online (Sandbox Code Playgroud)您还可以使用global $product;与$product->get_id()如果$product没有定义.
global $product;
$room = get_post_meta( $product->get_id(), 'room', true );
Run Code Online (Sandbox Code Playgroud)您还可以使用global $post;与$post->ID(如果$post没有定义):
global $post;
$room = get_post_meta( $post->ID, 'room', true );
Run Code Online (Sandbox Code Playgroud)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 );
## … / …
}
Run Code Online (Sandbox Code Playgroud)
现在,对于产品变体,如果您需要获取父变量产品ID,您将使用:
// Get the parent product ID (the parent variable product)
$parent_id = $cart_item['product_id'];
$room = get_post_meta( $parent_id, 'room', true );
## … / …
Run Code Online (Sandbox Code Playgroud)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 );
## … / …
}
Run Code Online (Sandbox Code Playgroud)
现在,对于产品变体,如果您需要获取父变量产品ID,您将使用:
// 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 );
## … / …
}
Run Code Online (Sandbox Code Playgroud)所以现在由你决定.
| 归档时间: |
|
| 查看次数: |
7813 次 |
| 最近记录: |