概要
woocommerce_product_related_posts_shuffle
フィルタは、WooCommerceの製品ページにおける関連製品の表示順序をカスタマイズするために用いられるフックです。このフィルタを使うことで、デフォルトの関連製品の順序をランダムに変更したり、特定の条件に基づいて並べ替えたりすることが可能です。
このフィルタは以下のような機能を実装する際に特によく使われます。
- 関連製品の表示順序をランダム化する。
- 特定のカスタム条件に基づいて関連製品を絞り込む。
- ユーザーの嗜好に基づき、関連製品を調整する。
- 他のプラグインやテーマとの互換性を持たせるためのカスタマイズ。
- 商品の売上に基づいた関連製品の優先順位付け。
- 特定の製品カテゴリやタグに基づく関連製品の制限。
構文
add_filter( 'woocommerce_product_related_posts_shuffle', 'your_custom_function' );
パラメータ
$related_ids
: 製品の関連IDの配列。
戻り値
- 書き換え後の関連製品IDの配列。
対応バージョン
- WooCommerce: 3.0.0以上
- WordPress: 4.6.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_related_posts_shuffle', function( $related_ids ) {
shuffle( $related_ids );
return $related_ids;
});
2. 特定カテゴリの関連製品の表示
このコードは、「tv」カテゴリの製品のみを関連として表示します。
add_filter( 'woocommerce_product_related_posts_shuffle', function( $related_ids ) {
return array_filter( $related_ids, function( $id ) {
return has_term( 'tv', 'product_cat', $id );
});
});
3. 特定の製品を優先的に表示
このコードは、特定の製品を関連製品リストの最初に追加します。
add_filter( 'woocommerce_product_related_posts_shuffle', function( $related_ids ) {
$priority_product_id = 123; // 優先表示したい製品ID
array_unshift( $related_ids, $priority_product_id );
return $related_ids;
});
4. ユーザーによる関連製品のカスタマイズ
このコードは、ユーザーに応じて関連製品を動的に変更します。
add_filter( 'woocommerce_product_related_posts_shuffle', function( $related_ids ) {
if( is_user_logged_in() ) {
// ログインユーザーの特別な関連製品ロジック
return array_unique( array_merge( $related_ids, array( 456, 789 ) ) ); // 追加する製品ID
}
return $related_ids;
});
5. 関連製品のカウントを制限
このコードは、表示される関連製品の数を制限します。
add_filter( 'woocommerce_product_related_posts_shuffle', function( $related_ids ) {
return array_slice( $related_ids, 0, 3 ); // 最初の3つの製品のみ表示
});