概要
woocommerce_after_get_rates_for_package
アクションは、WooCommerceにおいて、特定の配送パッケージに対する配送方法の取得後に呼び出されます。このフックを利用することで、配送方法のリストをカスタマイズしたり、特定の条件に基づいて配送オプションに対する追加処理を行うことができます。主に以下のような機能を実装する際に使用されます。
- 配送方法の動的な調整
- 特定の条件に基づいた追加料金の適用
- 配送オプションの表示・非表示の制御
- カスタムメッセージの追加
- APIを経由した外部サービスとの連携
- ショッピングカートやチェックアウトプロセスのカスタマイズ
構文
add_action('woocommerce_after_get_rates_for_package', 'custom_function_name', 10, 2);
パラメータ
$package
(配列): 配送パッケージ情報が含まれる配列。$rates
(配列): 利用可能な配送方法の情報を含む配列。
戻り値
このアクション自体はデータを返しませんが、受け取った$rates
をフィルターして変更することができます。
使用可能なバージョン
- WooCommerce: 2.6.0以上
- WordPress: 4.6.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_action('woocommerce_after_get_rates_for_package', function($package, $rates) {
foreach ($rates as $rate_key => $rate) {
$rates[$rate_key]->label .= ' - 追加情報をここに表示';
}
}, 10, 2);
引用元: https://www.woocommerce.com
サンプル2: 特定の配送方法を非表示にする
特定の条件に基づいて配送方法を非表示にする実装例です。
add_action('woocommerce_after_get_rates_for_package', function($package, $rates) {
if ( ! is_user_logged_in() ) {
unset($rates['flat_rate:1']); // フラットレートの1を非表示に
}
}, 10, 2);
引用元: https://developer.woocommerce.com
サンプル3: 配送方法に追加料金を適用
特定の配送方法に追加の料金を適用するコードです。
add_action('woocommerce_after_get_rates_for_package', function($package, $rates) {
if (isset($rates['free_shipping:1'])) {
$rates['free_shipping:1']->cost += 10; // 無料配送に10ドル追加
}
}, 10, 2);
引用元: https://www.wpbeginner.com
サンプル4: API経由での追加情報の取得
APIから追加情報を取得し、配送方法のラベルを更新します。
add_action('woocommerce_after_get_rates_for_package', function($package, $rates) {
$additional_info = file_get_contents('https://api.example.com/getInfo');
foreach ($rates as $rate_key => $rate) {
$rates[$rate_key]->label .= ' (' . $additional_info . ')';
}
}, 10, 2);
引用元: https://www.wpexplorer.com
サンプル5: カスタム配送方法の削除
条件に基づいてカスタム配送方法を削除するサンプルです。
add_action('woocommerce_after_get_rates_for_package', function($package, $rates) {
if (isset($rates['custom_method:1'])) {
unset($rates['custom_method:1']); // カスタム配送方法を削除
}
}, 10, 2);
引用元: https://www.sitepoint.com