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

概要

woocommerce_taxonomy_objects_product_shipping_classフィルタは、WooCommerceにおいて製品の配送クラスに関連するカスタムタクソノミーのオブジェクトをフィルタリングするために使用されるフックです。このフィルタを利用することにより、配送料の計算や製品の配送方法のカスタマイズが可能になります。具体的には以下のような場合に利用されることが多いです。

  1. 特定の配送クラスに基づいて製品をグループ化する際
  2. 配送オプションをカスタマイズするための条件を追加する際
  3. 特定の製品に対して異なる配送料金を設定する際
  4. カスタム配送メソッドを実装する際
  5. 配送クラスに基づいたレポート作成の際
  6. 商品一覧ページでのフィルタリング機能を強化する際

構文

フィルタの使用構文は以下の通りです。

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

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


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