您好我正在使用Woocommerce版本3.2.6。我们有一些订单。
我想在wordpress后端的订单编辑页面中product id
为123
时向订单添加一个额外的详细信息。
我想加上这个:
<a href="http://example.com/new-view/?id=<?php echo $order_id?;>">Click here to view this</a>
即:我们订单[订单ID = 3723] ,订购的商品ID为 123 。
然后在http://example.com/wp-admin/post.php?post=3723&action=edit
中,我想在相应的项目详细信息下面添加以下链接:
"<a href="http://example.com/new-view/?id=<?php echo $order_id?;>">Click here to view this</a>"
我们如何做到这一点?
哪个钩子适合这个。其实我在https://docs.woocommerce.com/wc-apidocs/hook-docs.html搜索。
我找到了班级WC_Meta_Box_Order_Items
。但我不知道如何使用它。
答案 0 :(得分:2)
订单商品 Meta Box使用html-order-items.php
循环显示订单商品,订单商品又使用html-order-item.php
来显示每件商品。
出于您的目的,您应该在html-order-item.php
内查看您希望插入代码段的确切位置。
我认为woocommerce_after_order_itemmeta
动作挂钩是理想的,因为它会在项目的元信息下方显示链接。 (如果您想在项目元素之前显示链接,请使用woocommerce_before_order_itemmeta
。)
add_action( 'woocommerce_after_order_itemmeta', 'wp177780_order_item_view_link', 10, 3 );
function wp177780_order_item_view_link( $item_id, $item, $_product ){
if( 123 == $_product->id ) {
echo "<a href='http://example.com/new-view/?id=" . $order->id . "'>Click here to view this</a>";
}
}
答案 1 :(得分:1)
WooCommerce版本3 + 的正确代码,仅在订单项后添加自定义链接,且仅在后端添加:
add_action( 'woocommerce_after_order_itemmeta', 'custom_link_after_order_itemmeta', 20, 3 );
function custom_link_after_order_itemmeta( $item_id, $item, $product ) {
// Only for "line item" order items
if( ! $item->is_type('line_item') ) return;
// Only for backend and for product ID 123
if( $product->get_id() == 123 && is_admin() )
echo '<a href="http://example.com/new-view/?id='.$item->get_order_id().'">'.__("Click here to view this").'</a>';
}
经过测试和工作
1)重要提示:将代码限制为仅订购商品“订单项”类型,以避免其他订单商品出现错误,例如“运费”,“费用”,“折扣”... < / p>
2)从
WC_Product
对象获取产品ID ,您将使用WC_Data
get_id()
方法。3)要从
WC_Order_Item_Product
对象获取订单ID ,您将使用WC_Order_Item
方法get_order_id()
。4)您需要在
is_admin()
语句中添加if
以限制后端显示。