概要
woocommerce_valid_order_statuses_for_order_again
フィルタは、WooCommerceで特定の注文ステータスを持つ注文を再注文可能にするためのフックです。このフィルタを使用することで、再注文を許可したい注文ステータスを簡単にカスタマイズできます。たとえば、特定の状況下での注文ステータスを調整するために使用されることが一般的です。このフィルタは、以下のような機能を実装する際によく使われます。
- 支払いが完了した注文を再注文可能にする。
- キャンセルされたが再注文を許可する場合の調整。
- 特定の商品が再注文できる条件を設定。
- 定期購入の注文ステータスを調整する。
- 商品が在庫切れの場合の処理。
- 特定の顧客グループ向けの再注文条件を設定。
このフィルタはWooCommerceに固有で、WooCommerceバージョン4.0以降で使用可能です。また、WordPressバージョン5.0以降が必要です。
構文
add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'your_custom_function' );
パラメータ
array $statuses
: 有効な注文ステータスの配列。WC_Order $order
: 対象の注文オブジェクト。
戻り値
array
: 更新された有効な注文ステータスの配列。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル1: 特定の注文ステータスを再注文可能にする
add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'custom_valid_order_statuses', 10, 2 );
function custom_valid_order_statuses( $statuses, $order ) {
if ( $order->get_status() === 'completed' || $order->get_status() === 'refunded' ) {
$statuses[] = 'completed';
}
return $statuses;
}
このコードは、「completed」または「refunded」の注文ステータスを持つ注文が再注文可能になるように追加します。
サンプル2: 支払いが完了した注文のみ再注文を許可
add_filter( 'woocommerce_valid_order_statuses_for_order_again', function( $statuses ) {
return array( 'wc-completed' );
});
このコードは、支払いが完了した注文だけを再注文可能とする設定を行います。
サンプル3: 商品が特定のカテゴリに所属する場合の再注文設定
add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'category_based_reorder', 10, 2 );
function category_based_reorder( $statuses, $order ) {
if ( has_term( 'special-category', 'product_cat', $order->get_items()[0]->get_product_id() ) ) {
$statuses[] = 'completed';
}
return $statuses;
}
このコードは、注文の最初の商品が「special-category」に属している場合に再注文を可能にします。
サンプル4: 複数の条件で再注文を制御
add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'multiple_conditions_reorder', 10, 2 );
function multiple_conditions_reorder( $statuses, $order ) {
if ( $order->get_status() === 'failed' && $order->get_total() > 0 ) {
$statuses[] = 'failed';
}
return $statuses;
}
このコードは、失敗した注文であり、かつ合計金額が0より大きい場合に再注文を許可します。
サンプル5: 特定の顧客向けに再注文を設定
add_filter( 'woocommerce_valid_order_statuses_for_order_again', 'customer_based_reorder', 10, 2 );
function customer_based_reorder( $statuses, $order ) {
if ( $order->get_customer_id() === 123 ) { // 顧客ID 123の場合
$statuses[] = 'completed';
}
return $statuses;
}
このコードは、特定の顧客(ID 123)による注文の場合、再注文が可能になるように設定します。
これらのサンプルは、さまざまな条件に基づいて注文ステータスを調整する方法を示しています。各例は異なったユースケースに適しています。