プラグインWooCommerceのwoocommerce_valid_order_statuses_for_order_againフィルタの使用方法・解説

概要

woocommerce_valid_order_statuses_for_order_againフィルタは、WooCommerceで特定の注文ステータスを持つ注文を再注文可能にするためのフックです。このフィルタを使用することで、再注文を許可したい注文ステータスを簡単にカスタマイズできます。たとえば、特定の状況下での注文ステータスを調整するために使用されることが一般的です。このフィルタは、以下のような機能を実装する際によく使われます。

  1. 支払いが完了した注文を再注文可能にする。
  2. キャンセルされたが再注文を許可する場合の調整。
  3. 特定の商品が再注文できる条件を設定。
  4. 定期購入の注文ステータスを調整する。
  5. 商品が在庫切れの場合の処理。
  6. 特定の顧客グループ向けの再注文条件を設定。

このフィルタは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)による注文の場合、再注文が可能になるように設定します。

これらのサンプルは、さまざまな条件に基づいて注文ステータスを調整する方法を示しています。各例は異なったユースケースに適しています。

この関数について質問する


上の計算式の答えを入力してください