概要
woocommerce_valid_order_statuses_for_payment_complete
フィルタは、WooCommerceプラグインにおいて、特定の注文ステータスを支払い完了として有効にするためのフックです。このフィルタを使用することで、デフォルトでは支払い完了と見なされない注文ステータスを、プラグイン開発者やサイト管理者が指定可能になります。
このフィルタは、以下のような機能を実装する際によく使われます。
- 特定のカスタム注文ステータスを支払い完了に持ち込む
- 新しい支払い方法が注文のステータスを変更できるようにする
- 条件に応じて複数の支払い完了ステータスを設定する
- 外部システムとの統合時に、特定の状態を完了として扱うよう設定する
- テスト環境で独自の状態を支払い完了とする
- 管理者が容易にトラブルシューティングできるように、特定のステータスを設定する
構文
apply_filters( 'woocommerce_valid_order_statuses_for_payment_complete', $valid_order_statuses, $order );
パラメータ
$valid_order_statuses
: 有効な注文ステータスの配列$order
: 現在の注文オブジェクト
戻り値
- フィルタによって変更された有効な注文ステータスの配列
バージョン
- WooCommerceバージョン: 3.0.0以上
- WordPressバージョン: 4.0以上
サンプルコード
サンプルコード1
add_filter( 'woocommerce_valid_order_statuses_for_payment_complete', 'custom_valid_order_statuses' );
function custom_valid_order_statuses( $statuses ) {
$statuses[] = 'on-hold';
return $statuses;
}
このコードでは、on-hold
ステータスを支払い完了として有効にします。
サンプルコード2
add_filter( 'woocommerce_valid_order_statuses_for_payment_complete', 'add_custom_order_status', 10, 2 );
function add_custom_order_status( $statuses, $order ) {
if ( $order->get_payment_method() === 'custom_gateway' ) {
$statuses[] = 'custom-status';
}
return $statuses;
}
このコードは、特定の支払い方法(custom_gateway
)を選んだ場合に、custom-status
を有効にします。
サンプルコード3
add_filter( 'woocommerce_valid_order_statuses_for_payment_complete', 'set_custom_status_for_testing', 20 );
function set_custom_status_for_testing( $statuses ) {
$statuses[] = 'test-completed';
return $statuses;
}
このコードでは、テスト環境において test-completed
ステータスを支払い完了として認めます。
サンプルコード4
add_filter( 'woocommerce_valid_order_statuses_for_payment_complete', 'manage_subscription_order_status', 15, 2 );
function manage_subscription_order_status( $statuses, $order ) {
if ( $order->get_type() === 'subscription' ) {
$statuses[] = 'active';
}
return $statuses;
}
このコードは、サブスクリプションタイプの注文に対して、active
ステータスを支払い完了ステータスに追加します。
サンプルコード5
add_filter( 'woocommerce_valid_order_statuses_for_payment_complete', 'guest_checkout_order_status', 10 );
function guest_checkout_order_status( $statuses ) {
if ( isset( $_SESSION['guest_checkout'] ) && $_SESSION['guest_checkout'] ) {
$statuses[] = 'guest-complete';
}
return $statuses;
}
このコードでは、ゲストチェックアウトを使用している場合、guest-complete
ステータスを支払い完了として扱えるようにしています。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |