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

概要

woocommerce_terms_is_checked_default フィルタは、WooCommerceの利用規約やプライバシーポリシーのチェックボックスが、ユーザーがサインアップをする際にデフォルトでチェックされるべきかどうかを制御するために使用されます。このフィルタを使用することで、オンラインショップの規約同意機能に柔軟性を持たせたり、特定の条件に基づいて表示を変更したりすることができます。具体的には、以下のような場面でよく使用されます。

  1. 利用規約に対するチェックボックスのデフォルト状態の変更
  2. サインアップフォームへのカスタムメッセージの追加
  3. サインアップ時に異なるユーザーグループに応じた条件分岐
  4. 特定のページでのみ規約に同意する必要がある場合の設定
  5. プライバシーポリシーが更新された際のチェックボックスの状態変更
  6. 他のプラグインと連携したカスタムロジックの実装

構文

add_filter('woocommerce_terms_is_checked_default', 'custom_terms_is_checked_default');

パラメータ

  • bool $is_checked: チェックボックスがデフォルトでチェックされているかどうか。
  • object $user: 現在のユーザーオブジェクト(未ログインユーザーの場合は null)。

戻り値

  • bool: チェックボックスがデフォルトでチェックされる場合は true、そうでない場合は false を返します。

対応するバージョン

  • 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_terms_is_checked_default', function() {
    return true; // デフォルトでチェックされる
});

このコードは、WooCommerceの規約チェックボックスが常にチェック済みになるように設定します。これにより、ユーザーが意図的にチェックを外さない限り、サインアップ時に同意が得られます。

サンプル2: 特定のユーザーのみに適用する

add_filter('woocommerce_terms_is_checked_default', function($is_checked) {
    $current_user = wp_get_current_user();
    return (in_array('premium_member', $current_user->roles)) ? true : $is_checked;
});

このコードは、ユーザーが「premium_member」の役割を持っている場合にのみ、チェックボックスをチェック済みにします。それ以外のユーザーには、デフォルトの動作が適用されます。

サンプル3: 条件によるデフォルトチェックの変更

add_filter('woocommerce_terms_is_checked_default', function($is_checked) {
    if ( is_page('signup') ) {
        return false; // サインアップページではデフォルトで未チェック
    }
    return $is_checked;
});

このコードは、サインアップページにのみ規約のチェックボックスを未チェックの状態にします。他のページでは、デフォルトの動作がそのまま適用されます。

サンプル4: チェックボックスにカスタムメッセージを追加

add_filter('woocommerce_terms_is_checked_default', function($is_checked) {
    if (!$is_checked) {
        add_filter('woocommerce_checkout_fields', function($fields) {
            $fields['billing']['billing_terms_message'] = array(
                'type' => 'notice',
                'class' => 'notice',
                'label' => 'Please read and accept our terms.'
            );
            return $fields;
        });
    }
    return $is_checked;
});

このコードは、チェックボックスが未チェックの場合にカスタムメッセージを追加します。このメッセージは、ユーザーに利用規約を読むよう促します。

サンプル5: 役割に基づくカスタムロジック

add_filter('woocommerce_terms_is_checked_default', function($is_checked) {
    if ( current_user_can('administrator') ) {
        return true; // 管理者の場合、デフォルトでチェック
    }
    return false; // 他のユーザーは未チェック
});

このコードは、管理者のみデフォルトでチェックボックスをチェック済みにします。他のすべてのユーザーは未チェックとなり、管理者に特別な取り扱いをします。

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


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