昨日、ある友人がNaibaに相談しました。彼が使用している
WooCommerce自動カードキー送信機能が失敗し、支払い後のステータスが「保留中」と表示され、管理者が手動でバックエンドで送信をクリックするまで、システムが顧客にシリアル番号を通知するメールを送信しません。 実際、この問題の原因は非常に単純で、WooCommerceのワークフロー設計は、ユーザーが支払いを完了した後、デフォルトのステータスが「処理中」であり、管理者が処理を完了した後にのみ「完了」になる(出荷などの状況が関与するため)ということです。 ただし、心配する必要はありません。Naibaがここで皆さんに共有する
自動注文完了を実現する2つの有効な方法。
方法1:プラグインを使用する
Autocomplete WooCommerce Orders プラグインを使用して自動注文完了を実現します。 1. 管理画面で「Autocomplete WooCommerce Orders」を検索するか、以下のリンクからダウンロードしてプラグインをインストールします。
ダウンロードリンク2. プラグインを有効化し、WooCommerce設定画面に移動します。 3. 「Autocomplete Orders」セクションで設定を保存します。

Autocomplete WooCommerce Orders は、物理商品の注文と仮想商品の注文に対して、自動完了を個別に設定することをサポートしており、ほとんどの支払いゲートウェイとも互換性があります。安心してご利用いただけます。 この無料プラグインに満足できない場合は、
公式の有料プラグイン。
方法2:コードを使用する
1. 以下のコードをサイトのテーマの functions.php ファイルに追加します。追加方法がわからない場合は、以下を参考にしてください:
functions.phpファイルにコードを安全に追加する方法:Code Snippetsadd_action('woocommerce_order_status_changed', 'ts_auto_complete_by_payment_method');
function ts_auto_complete_by_payment_method($order_id)
{
if ( ! $order_id ) {
return;
}
global $product;
$order = wc_get_order( $order_id );
if ($order->data['status'] == 'processing') {
$payment_method=$order->get_payment_method();
if ($payment_method!="cod")
{
$order->update_status( 'completed' );
}
}
}このコードは、
woocommerce_order_status_changedこのフックを利用して注文が完了したかどうかを判断し、代金引換(COD)以外の注文は、支払いを受領したら自動的に「完了」としてマークします。 WooCommerceのデフォルト支払い方法のIDは以下の通りです。上記のコードを必要に応じて変更できます:銀行振込(bacs)、小切手払い(cheque)、代金引換(cod)、PayPal(paypal)。 2. 以下のコードは、仮想商品かどうかをチェックし、仮想商品であれば自動的に完了とします。
add_action('woocommerce_order_status_changed', 'ts_auto_complete_virtual');
function ts_auto_complete_virtual($order_id)
{
if ( ! $order_id ) {
return;
}
global $product;
$order = wc_get_order( $order_id );
if ($order->data['status'] == 'processing') {
$virtual_order = null;
if ( count( $order->get_items() ) > 0 ) {
foreach( $order->get_items() as $item ) {
if ( 'line_item' == $item['type'] ) {
$_product = $order->get_product_from_item( $item );
if ( ! $_product->is_virtual() ) {
// once we find one non-virtual product, break out of the loop
$virtual_order = false;
break;
}
else {
$virtual_order = true;
}
}
}
}
// if all are virtual products, mark as completed
if ( $virtual_order ) {
$order->update_status( 'completed' );
}
}
}以上が、Naibaが共有するWooCommerce自動注文完了の方法です。お役に立てれば幸いです。
コメントは終了しました
この記事のコメント機能は終了しています。ご質問がある場合は、他の方法でお問い合わせください。