概要
woocommerce_product_crosssell_ids
は、WooCommerceプラグインで使用されるフィルターフックです。このフィルターは、特定の商品に対するクロスセル商品(関連商品)を取得する際に利用されます。この機能を実装する際によく使われる具体的なシナリオは以下の通りです:
- 特定の商品ページに表示するクロスセル商品をカスタマイズする。
- ユーザーの購入履歴に基づいてクロスセル商品を変更する。
- 季節やキャンペーンに合わせてクロスセル商品を変更する。
- クロスセル商品の表示条件を特定のカテゴリに制約する。
- 特別なプロモーションに基づいてクロスセル商品を追加する。
- クロスセル商品をランダムに表示する機能を追加する。
構文
add_filter('woocommerce_product_crosssell_ids', 'custom_function_name', 10, 2);
パラメータ
- $cross_sell_ids:デフォルトのクロスセル商品IDの配列。
- $product_id:現在の製品のID。
戻り値
- クロスセル商品のIDを含む配列(配列が空の可)。
使用可能なプラグインのバージョン
- WooCommerce: バージョン4.0以上
- WordPress: バージョン5.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_product_crosssell_ids', 'custom_cross_sell_products', 10, 2);
function custom_cross_sell_products($cross_sell_ids, $product_id) {
// 特定の条件でカスタムIDを追加
if ($product_id == 123) {
$cross_sell_ids[] = 456; // 商品ID456を追加
}
return $cross_sell_ids;
}
このサンプルコードは、特定の商品(ID 123)の場合に、クロスセル商品として商品ID 456を追加します。
引用元: https://woocommerce.com/
サンプル2: 購入履歴に基づくクロスセル商品の変更
add_filter('woocommerce_product_crosssell_ids', 'purchase_history_based_cross_sells', 10, 2);
function purchase_history_based_cross_sells($cross_sell_ids, $product_id) {
// ユーザーの注文履歴に基づいてクロスセル商品を変更
$recent_orders = get_user_orders(); // 独自関数を使用
if (in_array($product_id, $recent_orders)) {
$cross_sell_ids[] = 789; // 追加商品ID789
}
return $cross_sell_ids;
}
このサンプルは、ユーザーの購入履歴に基づいてクロスセル商品を変える機能を実装しています。
引用元: https://woocommerce.com/
サンプル3: 特定のカテゴリのクロスセル商品をフィルタリング
add_filter('woocommerce_product_crosssell_ids', 'filter_cross_sells_by_category', 10, 2);
function filter_cross_sells_by_category($cross_sell_ids, $product_id) {
$product_cats = wp_get_post_terms($product_id, 'product_cat', array("fields" => "ids"));
if (in_array(10, $product_cats)) { // カテゴリーID 10
return $cross_sell_ids; // クロスセル商品はそのまま
}
return []; // 他の場合はクロスセルを表示しない
}
このコードは、特定のカテゴリに属する場合だけクロスセル商品を表示させるものです。
引用元: https://woocommerce.com/
サンプル4: 季節プロモーションのためのクロスセル表示
add_filter('woocommerce_product_crosssell_ids', 'seasonal_cross_sells', 10, 2);
function seasonal_cross_sells($cross_sell_ids, $product_id) {
if (date('n') == 12) { // 12月に特定の商品を追加
$cross_sell_ids[] = 321; // 商品ID 321
}
return $cross_sell_ids;
}
このサンプルコードは、12月の間、特定の商品をクロスセルとして提示します。
引用元: https://woocommerce.com/
サンプル5: クロスセル商品をランダムに表示
add_filter('woocommerce_product_crosssell_ids', 'random_cross_sell_products', 10, 2);
function random_cross_sell_products($cross_sell_ids, $product_id) {
shuffle($cross_sell_ids); // クロスセル商品の配列をシャッフル
return array_slice($cross_sell_ids, 0, 3); // 上位3つを返す
}
このコードは、ランダムにクロスセル商品を表示する機能を持っています。
引用元: https://woocommerce.com/