概要
woocommerce_product_upsell_ids
フィルタは、WooCommerceにおいて、商品ページに関連商品(アップセル商品)を設定する際に使用されます。このフィルタを用いることで、デフォルトのアップセル商品をカスタマイズしたり、特定の商品に対して異なるアップセル商品を表示したりすることが可能です。一般的な使用ケースとしては以下のような場面があります:
- 特定の条件に基づいてアップセル商品のリストを変更する。
- 他のプラグインやテーマの機能とも連携して、動的にアップセル商品を生成する。
- 商品のカスタムフィールドを使用して、異なるアップセル商品を表示する。
- 特定の製品カテゴリーに属する商品に対してカスタマイズを加える。
- プレースホルダとして標準のアップセル商品を上書きする。
- プロモーションやキャンペーンに合わせた一時的な変更を行う。
構文
add_filter( 'woocommerce_product_upsell_ids', 'your_function_name', 10, 2 );
パラメータ
$upsell_ids
(array): 既存のアップセル商品IDの配列。$product_id
(int): 現在の製品ID。
戻り値
- (array): フィルタリングされたアップセル商品IDの配列。
使用可能なバージョン
- 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: 特定のカテゴリのアップセル商品を追加する
このコードは、特定のカテゴリに属する商品をアップセル商品に追加します。
function add_category_upsell_ids( $upsell_ids, $product_id ) {
$product = wc_get_product( $product_id );
if ( has_term( '特定のカテゴリ', 'product_cat', $product_id ) ) {
$upsell_ids[] = 123; // 特定のアップセル商品ID
}
return $upsell_ids;
}
add_filter( 'woocommerce_product_upsell_ids', 'add_category_upsell_ids', 10, 2 );
(引用元: https://developer.woocommerce.com/)
サンプル2: アップセル商品のランダム化
このコードは、アップセル商品のリストをランダム順に並べ替えます。
function randomize_upsell_ids( $upsell_ids, $product_id ) {
shuffle( $upsell_ids ); // アップセルIDをランダムに並べ替える
return $upsell_ids;
}
add_filter( 'woocommerce_product_upsell_ids', 'randomize_upsell_ids', 10, 2 );
(引用元: https://developer.woocommerce.com/)
サンプル3: 商品のカスタムフィールドを使用したアップセル商品の設定
このコードは、商品のカスタムフィールドに基づいてアップセル商品を制御します。
function custom_field_based_upsells( $upsell_ids, $product_id ) {
$custom_ids = get_post_meta( $product_id, '_custom_upsell_ids', true );
if ( ! empty( $custom_ids ) ) {
return array_map( 'intval', explode( ',', $custom_ids ) ); // カスタムフィールドからIDを取得
}
return $upsell_ids;
}
add_filter( 'woocommerce_product_upsell_ids', 'custom_field_based_upsells', 10, 2 );
(引用元: https://developer.woocommerce.com/)
サンプル4: 特定のユーザーにだけ表示するアップセル商品の変更
このコードは、特定のユーザー役割に基づいてアップセル商品をカスタマイズします。
function conditional_upsell_ids( $upsell_ids, $product_id ) {
if ( current_user_can( 'special_user_role' ) ) {
$upsell_ids[] = 456; // 特定のアップセル商品ID
}
return $upsell_ids;
}
add_filter( 'woocommerce_product_upsell_ids', 'conditional_upsell_ids', 10, 2 );
(引用元: https://developer.woocommerce.com/)
サンプル5: 手動でアップセル商品を強制設定
このコードは、特定の製品に対して強制的にアップセル商品を設定します。
function force_upsell_ids( $upsell_ids, $product_id ) {
if ( $product_id == 789 ) { // 特定の商品IDを確認
return array( 101, 102 ); // 設定するアップセル商品ID
}
return $upsell_ids;
}
add_filter( 'woocommerce_product_upsell_ids', 'force_upsell_ids', 10, 2 );
(引用元: https://developer.woocommerce.com/)