В WooCommerce при создании и сохранении ручного заказа через Admin я пытаюсь заменить значение валюты заказа на пользовательское значение метаданных (мета-ключ _wcj_order_currency
)
Вот 2 скриншота связанных метаданных (пары ключ / значение):
Поэтому я хотел бы заменить валюту заказа EUR
на пользовательскую валюту USD
с _order_currency
мета-ключ при сохранении .
Ссылки, которые я использовал:
Моя попытка кода:
// Saving (Updating) or doing an action when submitting
add_action( 'save_post', 'update_order_custom_field_value' );
function update_order_custom_field_value( $post_id ){
// Only for shop order
// if ( 'shop_order' != $_POST[ 'post_type' ] )
if ( 'shop_order')
return $post_id;
// Checking that is not an autosave
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return $post_id;
// Check the user’s permissions (for 'shop_manager' and 'administrator' user roles)
if ( ! current_user_can( 'edit_shop_order', $post_id ) )
return $post_id;
//Up to above is fine for Admin order
// Updating custom field data
if( isset( $_POST['_wcj_order_currency'] ) ) {
$order = wc_get_order( $post_id );
// Replacing and updating the value
update_post_meta( $post_id, '_order_currency', $_POST['_wcj_order_currency'] );
}}
// Testing output in order edit pages (below billing address):
//This displays the existing values well
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_order_custom_field_value' );
function display_order_custom_field_value( $order ){
echo '<p><strong>'.__('Order Currency').':</strong> <br/>' . get_post_meta( $order->get_id(), '_order_currency', true ) . '</p>';
echo '<p><strong>'.__('Booster Order Currency').':</strong> <br/>' . get_post_meta( $order->get_id(), '_wcj_order_currency', true ) . '</p>';
}
Проверка вывода в страницах редактирования заказа (ниже адреса для выставления счета).Код работает хорошо.
Но я не могу заставить его работать и обновлять валюту заказа при создании заказа.
Любая помощь по этому вопросу приветствуется.