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

概要

woocommerce_upsells_orderbyフィルタは、WooCommerceの関連商品(アップセル)を表示する際に、その並び順をカスタマイズするためのフックです。このフィルタを利用することで、アップセル商品の表示順をデフォルトの設定から変更することが可能になります。一般的に、次のような用途で使われます:

  1. 商品の価格に基づいた並び替え
  2. 商品の在庫状況による並び替え
  3. 商品の評価に基づく並び替え
  4. 最新の商品を優先表示
  5. カスタムメタデータに基づくソート
  6. 特定のカテゴリーの商品を優先する

構文

add_filter( 'woocommerce_upsells_orderby', 'custom_upsells_orderby' );

パラメータ

  • $orderby: ソート順を指定する文字列。デフォルトでは menu_orderdatetitle などがあります。

戻り値

  • フィルタ後のソート順を示す文字列。

使用可能なバージョン

  • WooCommerce: 3.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_upsells_orderby', 'custom_sort_by_price' );

function custom_sort_by_price( $orderby ) {
    return 'meta_value_num';
}

このサンプルコードでは、アップセル商品を価格順に並び替えます。商品メタデータの価格を基準に整列します。

サンプルコード 2: 評価順にソート

add_filter( 'woocommerce_upsells_orderby', 'custom_sort_by_rating' );

function custom_sort_by_rating( $orderby ) {
    return 'rating';
}

このサンプルコードでは、アップセル商品を評価の高い順に表記します。顧客レビューの評価を基準に並び替えています。

サンプルコード 3: 新着順にソート

add_filter( 'woocommerce_upsells_orderby', 'custom_sort_by_date' );

function custom_sort_by_date( $orderby ) {
    return 'date';
}

このサンプルコードでは、アップセル商品を最も新しい商品から古い商品へと並び替えます。商品追加日を基準にします。

サンプルコード 4: 在庫がある商品のみを優先

add_filter( 'woocommerce_upsells_orderby', 'custom_sort_in_stock_first' );

function custom_sort_in_stock_first( $orderby ) {
    return 'meta_value;meta_key=_stock_status';
}

このサンプルコードでは、在庫がある商品を優先的に表示します。商品在庫状況を検査するメタキーを使用しています。

サンプルコード 5: カスタムフィールドでソート

add_filter( 'woocommerce_upsells_orderby', 'custom_sort_by_custom_field' );

function custom_sort_by_custom_field( $orderby ) {
    return 'meta_value_num;meta_key=custom_field';
}

このサンプルコードでは、カスタムフィールド(例: 特定の属性に基づく値)によってアップセル商品を並び替えます。カスタマイズされた商品の認識に利用されます。

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


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