概要
woocommerce_get_script_data
フィルタは、WooCommerceが読み込むJavaScriptファイルに渡されるデータを操作するために使用されます。このフィルタを利用することで、追加のスクリプトやデータをWooCommerceのスクリプトに挿入したり、既存のデータを変更することが可能です。特に、以下のような機能を実装する際によく使われます。
- カスタムデータの追加
- スクリプトの条件付き読み込み
- 外部APIからのデータ取得
- ユーザーのアクションに基づくスクリプトの制御
- デバッグ情報の追加
- プラグイン間の競合の解消
構文
add_filter( 'woocommerce_get_script_data', 'your_custom_function', 10, 2 );
パラメータ
$script_data
(array): スクリプトに渡されるデータの配列。$handle
(string): 対象のスクリプトのハンドル名。
戻り値
- (array): フィルタされたスクリプトデータの配列。
使用可能なバージョン
- WooCommerce: 3.0.0以上
- WordPress: 4.0.0以上
サンプルコード
-
カスタムメッセージを追加する
add_filter( 'woocommerce_get_script_data', 'add_custom_message', 10, 2 ); function add_custom_message( $script_data, $handle ) { if ( 'woocommerce-like' === $handle ) { $script_data['customMessage'] = 'Hello, WooCommerce!'; } return $script_data; }
このサンプルコードは、特定のスクリプトハンドル(ここでは
woocommerce-like
)にカスタムメッセージを追加します。 -
スクリプト条件付き読み込み
add_filter( 'woocommerce_get_script_data', 'conditional_script_loading', 10, 2 ); function conditional_script_loading( $script_data, $handle ) { if ( is_cart() && 'woocommerce-cart' === $handle ) { $script_data['loadExtra'] = true; } return $script_data; }
このコードは、カートページの場合にのみ追加データをスクリプトに渡す条件を設定します。
-
外部APIからのデータ取得
add_filter( 'woocommerce_get_script_data', 'fetch_data_from_api', 10, 2 ); function fetch_data_from_api( $script_data, $handle ) { if ( 'woocommerce-checkout' === $handle ) { $response = wp_remote_get( 'https://api.example.com/data' ); if ( is_array( $response ) && ! is_wp_error( $response ) ) { $script_data['apiData'] = json_decode( $response['body'], true ); } } return $script_data; }
このサンプルは、チェックアウトページで外部APIからデータを取得し、その情報をスクリプトデータに追加します。
-
ユーザーアクション基づくデータ操作
add_filter( 'woocommerce_get_script_data', 'user_action_data', 10, 2 ); function user_action_data( $script_data, $handle ) { if ( 'woocommerce-account' === $handle ) { $script_data['userStatus'] = is_user_logged_in() ? 'logged_in' : 'guest'; } return $script_data; }
このコードは、アカウントページでユーザーのログイン状態に基づいてデータを追加します。
-
デバッグ情報の追加
add_filter( 'woocommerce_get_script_data', 'debug_info', 10, 2 ); function debug_info( $script_data, $handle ) { if ( 'woocommerce-debug' === $handle ) { $script_data['debug'] = true; $script_data['version'] = wc_get_version(); } return $script_data; }
このサンプルは、特定のスクリプトにデバッグ情報とバージョンを追加します。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |