Как установить собственный статус заказа WooCommerce в зависимости от места получения Local Pickup PlusPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как установить собственный статус заказа WooCommerce в зависимости от места получения Local Pickup Plus

Сообщение Anonymous »

Чтобы предлагать места самовывоза во время оформления заказа при установке WooCommerce, мы используем Local Pickup Plus от Skyverge. Этот инструмент работает должным образом, а ордера установлены в состояние «Ожидание». Однако мы хотим, чтобы для статуса заказов был установлен пользовательский статус в зависимости от выбранного местоположения.
Я уже создал пользовательские статусы с помощью следующего кода:

Код: Выделить всё

// Add the custom orderstatusses "In Behandeling Antwerpen" and "In Behandeling Mechelen"
add_action( 'init', 'register_custom_order_statuses' );
function register_custom_order_statuses() {
register_post_status( 'wc-in_behandeling_locatie_antwerpen', array(
'label'                     => 'In Behandeling Antwerpen',
'public'                    => true,
'exclude_from_search'       => false,
'show_in_admin_all_list'    => true,
'show_in_admin_status_list' => true,
'label_count'               => _n_noop( 'In Behandeling Antwerpen (%s)', 'In Behandeling Antwerpen (%s)' )
));

register_post_status( 'wc-in_behandeling_locatie_mechelen', array(
'label'                     => 'In Behandeling Mechelen',
'public'                    => true,
'exclude_from_search'       => false,
'show_in_admin_all_list'    => true,
'show_in_admin_status_list' => true,
'label_count'               => _n_noop( 'In Behandeling Mechelen (%s)', 'In Behandeling Mechelen (%s)' )
));
}

// Display the orderstatusses
add_filter( 'wc_order_statuses', 'add_custom_order_statuses_to_wc' );
function add_custom_order_statuses_to_wc( $order_statuses ) {
$order_statuses['wc-in_behandeling_locatie_antwerpen'] = 'In Behandeling Antwerpen';
$order_statuses['wc-in_behandeling_locatie_mechelen'] = 'In Behandeling Mechelen';
return $order_statuses;
}
Мой подход к установке вышеуказанных статусов для выбранного местоположения:

Код: Выделить всё

// Set the status based on the selected location during checkout
add_action( 'woocommerce_checkout_order_processed', 'change_order_status_based_on_pickup_location', 10, 3 );
function change_order_status_based_on_pickup_location( $order_id, $posted_data, $order ) {
foreach( $order->get_shipping_methods() as $item_id => $item ){
$location_id = $item->get_meta('_pickup_location_id');

if ( $location_id == '8124' ) {
$order->update_status( 'wc-in_behandeling_locatie_antwerpen', 'In Behandeling Antwerpen' );
} elseif ( $location_id == '8123' ) {
$order->update_status( 'wc-in_behandeling_locatie_mechelen', 'In Behandeling Mechelen' );
} else {
error_log( 'Afhaallocatie niet herkend: ' . print_r( $location_id, true ) );
}
}
}
Этот код не работает должным образом. Статус по-прежнему «ожидает».

Подробнее здесь: https://stackoverflow.com/questions/790 ... ion-of-loc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»