【发布时间】:2021-04-19 11:15:20
【问题描述】:
我想在创建订单时向订单及其 order_items 添加两种类型的元数据。我尝试了一些方法,但没有成功。
我要添加的第一个是 $order->get_date_created();作为订单的元数据。
// Add order date as order meta data
add_action( 'woocommerce_checkout_create_order', 'add_order_date_to_order_meta_data', 10, 2 );
function add_order_date_to_order_meta_data( $order, $data ) {
$order_date = $order->get_date_created();
$order->update_meta_data( 'order_created', $order_date );
}
第二个是$order->get_id();我想将 order_items 添加到订单本身
// Add order number as order meta data
add_action( 'woocommerce_checkout_create_order', 'add_order_number_to_order_meta_data', 10, 2 );
function add_order_number_to_order_meta_data( $order, $data ) {
$order_id = $order->get_id();
$order->update_meta_data( 'order_number', $order_id );
}
我对如何将其添加到订单行一无所知。不知道如何做到这一点。我发现了以下内容,但我认为这是在创建订单之前添加信息?
add_action( 'woocommerce_checkout_create_order_line_item', 'add_meta_to_line_item', 20, 4 );
function add_meta_to_line_item( $item, $cart_item_key, $values, $order )
{
$_p = $item->get_product();
$key = $order->get_id();
if ( false !== ( $value = $_p->get_meta( $key, true ) ) )
$item->add_meta_data( $key, true);
}
然后在我创建了这些元字段之后,我还想将它们添加到前端订单概览中的一列中。
/**
* Adds a new column to the "My Orders" table in the account.
*
* @param string[] $columns the columns in the orders table
* @return string[] updated columns
*/
function metavalue_add_my_account_orders_column( $columns ) {
$new_columns = array();
foreach ( $columns as $key => $name ) {
$new_columns[ $key ] = $name;
// add meta_value after order status column
if ( 'order-status' === $key ) {
$new_columns['order_number'] = __( 'Order Number', 'textdomain' );
$new_columns['order_created'] = __( 'Order Created', 'textdomain' );
}
}
return $new_columns;
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'metavalue_add_my_account_orders_column' );
我希望有人能在正确的方向上帮助我。
【问题讨论】:
标签: php wordpress woocommerce metadata orders