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

概要

woocommerce_cross_sells_orderby フィルタは、WooCommerce におけるクロスセル商品(関連商品)の表示順序を変更する際に使用されます。このフィルタは、デフォルトの表示順序をカスタマイズしたい場合や、特定の販売戦略に基づいて商品を並べ替えたい場合に利用されます。具体的には、以下のような機能を実装する際によく使われます。

  1. 人気商品の優先表示
  2. 特定カテゴリーの商品を先に表示
  3. 新着商品の優先表示
  4. 価格順の商品の表示
  5. カスタムフィールドに基づいた表示順序
  6. セール中の商品を優先的に表示

構文

add_filter( 'woocommerce_cross_sells_orderby', 'custom_cross_sells_orderby' );

パラメータ

  • $orderby: 既定の並び順
  • $product_id: 現在の製品の ID

戻り値

  • 変更された並び順(例:'date', 'price', 'popularity' などの定数)

使用可能なプラグイン WooCommerce のバージョン

  • WooCommerce 3.0以降

WordPress のバージョン

  • 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_cross_sells_orderby', function( $orderby ) {
    return 'popularity'; // 人気の商品を優先的に表示
});

このサンプルでは、クロスセル商品を人気順に並べ替えています。

サンプル 2: 新着商品の優先表示

add_filter( 'woocommerce_cross_sells_orderby', function( $orderby ) {
    return 'date'; // 日付順で並び替え
});

このコードは、クロスセル商品の表示を新着順に変更します。

サンプル 3: 価格順の商品の表示

add_filter( 'woocommerce_cross_sells_orderby', function( $orderby ) {
    return 'price'; // 価格順で商品を表示
});

このサンプルでは、商品の価格で並べ替えを行い、安いものから表示します。

サンプル 4: 特定カテゴリーの商品を先に表示

add_filter( 'woocommerce_cross_sells_orderby', function( $orderby, $product_id ) {
    $cross_sells = get_post_meta($product_id, '_crosssell_ids', true);
    // 特定カテゴリーのIDを例示
    $category_id = '12';
    // 特定カテゴリーの商品をフィルタリング
    return array_filter($cross_sells, function($id) use ($category_id) {
        return has_term($category_id, 'product_cat', $id);
    });
});

このサンプルでは、特定のカテゴリーに属する商品のみを表示させる方法を示しています。

サンプル 5: カスタムフィールドに基づいた表示順序

add_filter( 'woocommerce_cross_sells_orderby', function( $orderby ) {
    return 'meta_value_num'; // カスタムフィールドに基づいて並び替え
}, 10, 2 );

このコードは、カスタムフィールドの数値に基づいて商品を並べ替えます。

著作権フリーのサンプルコードです。引用元は各自で確認してください。

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


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