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

概要

woocommerce_order_subtotal_to_display フィルタは、WooCommerceのオーダーサブトータル(小計)表示をカスタマイズするためのフックです。このフィルタを使用することで、オーダーの小計額に対してさまざまな変更を加えることができます。具体的には、次のような機能を実装する際によく使われます。

  1. 税金や送料を考慮した小計の表示のカスタマイズ
  2. 特定の条件に応じた割引の適用
  3. 通貨フォーマットの変更
  4. サブトータルの表示におけるラベルの変更
  5. 通常と異なる小計の計算ロジックの実装
  6. ユーザーのロールに基づく異なる小計の表示

このフィルタの構文は次の通りです。

add_filter( 'woocommerce_order_subtotal_to_display', 'custom_function', 10, 2 );

パラメータ

  • string $subtotal:現在の小計額
  • WC_Order $order:対象のWooCommerce注文オブジェクト

戻り値

  • string:変更された小計額

使用可能なプラグインバージョン

  • WooCommerce:3.0.0以上
  • WordPress:4.0以上

この関数のアクションでの使用可能性

アクション 使用例
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_order_subtotal_to_display', 'custom_subtotal_format', 10, 2 );

function custom_subtotal_format( $subtotal, $order ) {
    return '¥' . number_format( $subtotal, 0) . ' (税抜)';
}

このコードは、オーダーの小計を円(¥)で表示し、「税抜」と付け加えます。数値フォーマットも整えられています。

サンプルコード2

add_filter( 'woocommerce_order_subtotal_to_display', 'apply_custom_discount', 10, 2 );

function apply_custom_discount( $subtotal, $order ) {
    if ( $order->get_total() > 10000 ) {
        return $subtotal - 500; // 10,000円以上の注文には500円の割引
    }
    return $subtotal;
}

このコードは、10,000円を超えるオーダーに対して自動的に500円の割引を適用します。

サンプルコード3

add_filter( 'woocommerce_order_subtotal_to_display', 'prepend_discount_message', 10, 2 );

function prepend_discount_message( $subtotal, $order ) {
    if ( $order->get_discount_total() > 0 ) {
        return '割引適用: ¥' . number_format( $subtotal, 0);
    }
    return $subtotal;
}

このコードは、オーダーが割引を適用されている場合、表示の先頭に「割引適用」というメッセージを追加します。

サンプルコード4

add_filter( 'woocommerce_order_subtotal_to_display', 'conditional_currency_display', 10, 2 );

function conditional_currency_display( $subtotal, $order ) {
    $currency = get_woocommerce_currency();
    if ( $currency === 'JPY' ) {
        return '¥' . $subtotal; // 円の場合
    }
    return $subtotal . ' ' . $currency; // 他通貨の場合
}

このコードは、使用している通貨に応じて小計の表示形式を変更します。円の場合は「¥」、それ以外の場合は通貨コードを追加します。

サンプルコード5

add_filter( 'woocommerce_order_subtotal_to_display', 'custom_total_with_vat', 10, 2 );

function custom_total_with_vat( $subtotal, $order ) {
    $vat = $subtotal * 0.1; // 10%の消費税を計算
    return '¥' . number_format( $subtotal + $vat, 0) . ' (税込)';
}

このコードは、小計に10%の消費税を加算して税込みの金額を表示し、形式を整えます。

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


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