概要
woocommerce_taxonomy_objects_product_shipping_class
フィルタは、WooCommerceにおいて製品の配送クラスに関連するカスタムタクソノミーのオブジェクトをフィルタリングするために使用されるフックです。このフィルタを利用することにより、配送料の計算や製品の配送方法のカスタマイズが可能になります。具体的には以下のような場合に利用されることが多いです。
- 特定の配送クラスに基づいて製品をグループ化する際
- 配送オプションをカスタマイズするための条件を追加する際
- 特定の製品に対して異なる配送料金を設定する際
- カスタム配送メソッドを実装する際
- 配送クラスに基づいたレポート作成の際
- 商品一覧ページでのフィルタリング機能を強化する際
構文
フィルタの使用構文は以下の通りです。
add_filter('woocommerce_taxonomy_objects_product_shipping_class', 'custom_function_name', 10, 2);
パラメータ
woocommerce_taxonomy_objects_product_shipping_class
: フィルタフック名custom_function_name
: コールバック関数の名前- 第1引数: 配送クラスオブジェクトの配列
- 第2引数: WP_Termオブジェクト
戻り値
配送クラスオブジェクトの配列を返します。この配列がフィルタリングされることにより、WooCommerceの出力に影響を与えます。
使用可能なプラグインバージョン
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_taxonomy_objects_product_shipping_class', function($terms, $taxonomies) {
return array_filter($terms, function($term) {
return $term->slug === 'free-shipping';
});
}, 10, 2);
引用元: https://www.example.com/sample1
サンプル2: 配送クラスにカスタムメタを追加する
配送クラスにカスタムメタ情報を追加する方法です。
add_filter('woocommerce_taxonomy_objects_product_shipping_class', function($terms) {
foreach ($terms as $term) {
$term->custom_meta = get_term_meta($term->term_id, 'custom_meta_key', true);
}
return $terms;
});
引用元: https://www.example.com/sample2
サンプル3: 配送クラスの名称を変更する
このサンプルでは、配送クラスの名称をカスタマイズしています。
add_filter('woocommerce_taxonomy_objects_product_shipping_class', function($terms) {
foreach ($terms as $term) {
if ($term->name === 'Standard Shipping') {
$term->name = '快適配送';
}
}
return $terms;
});
引用元: https://www.example.com/sample3
サンプル4: 別のタクソノミーでフィルタリングする
他のタクソノミーに基づいて配送クラスをフィルタリングする例です。
add_filter('woocommerce_taxonomy_objects_product_shipping_class', function($terms) {
$excluded_terms = ['international-shipping'];
return array_diff($terms, $excluded_terms);
});
引用元: https://www.example.com/sample4
サンプル5: 特定のカスタムフィールドに基づいたフィルタリング
特定のカスタムフィールドによって配送クラスをフィルタリングします。
add_filter('woocommerce_taxonomy_objects_product_shipping_class', function($terms) {
return array_filter($terms, function($term) {
return get_term_meta($term->term_id, 'is_active', true) === 'yes';
});
});
引用元: https://www.example.com/sample5