我在订单编辑页面上添加了一个自定义Meta框,并试图保存数据,但出现了405错误(数据保存成功,代码似乎可以工作):
// Adding Meta container admin shop_order pages
add_action( 'add_meta_boxes', function() {
add_meta_box(
'tracking_field',
__('Tracking number','woodmart-child'),
'add_tracking_field_content',
wc_get_page_screen_id('shop-order'),
'side',
'core'
);
});
// Adding Meta field in the meta container on admin shop_order pages
function add_tracking_field_content( $order ) {
echo '<input type="text" style="width:100%" name="ttn_number" placeholder="'. __('Tracking number', 'woodmart-child') .'" value="'. $order->get_transaction_id() .'">';
echo '<input type="hidden" name="ttn_nonce" value="'. wp_create_nonce() .'">';
}
add_action( 'woocommerce_update_order', 'save_tracking_number', 10, 2 );
function save_tracking_number($order_id, $order){
if ( ! isset($_REQUEST['ttn_nonce']) && ! wp_verify_nonce($_REQUEST['ttn_nonce']) ) {
return $order_id;
}
$ttn_number = sanitize_text_field( $_POST['ttn_number'] );
$order->set_transaction_id($ttn_number);
if(!empty($ttn_number)) {
$order->update_status('wc-arrival-shipment', '', true);
}
$order->save();
}
字符串
我使用WooCommerce与HPOS激活功能,所以默认挂钩save_post_shop_order
不为我工作.
我发现woocommerce_update_order
挂钩,但我认为这是一个坏主意,或者它只是不允许使用$order->set_transaction_id()
.
1条答案
按热度按时间omqzjyyz1#
设置自定义交易ID可能不是最好的选择。您可以在订单中添加自定义Meta框。还更改了一点nonce处理并添加了操作。
字符串