概要
loop_shop_per_page
フィルタは、WooCommerceで商品リストページに表示される商品の数を制御するために使用されます。このフィルタは、開発者が商品一覧ページの表示をカスタマイズする際によく使われます。以下は、このフィルタが実装されることが多い機能の例です。
- 商品ページの表示数をレスポンシブに変更
- 特定の条件に基づいて商品数を動的に変更
- ショップページのレイアウト調整
- クッキーやセッションユーザーの設定に基づく商品数のカスタマイズ
- 特別なキャンペーンやセールに合わせた商品表示数の変更
- ユーザーのログイン状態に応じた表示数の変更
構文
add_filter( 'loop_shop_per_page', 'custom_loop_shop_per_page', 20 );
パラメータ
loop_shop_per_page
: フィルタのフック名。custom_loop_shop_per_page
: 開発者が定義するコールバック関数。20
: フィルタの優先順位(オプション)。
戻り値
- このフィルタは、商品を表示する数を整数値で返します。
使用可能なプラグイン
- WooCommerce バージョン: 5.0.x 以上
- WordPress バージョン: 5.0.x 以上
サンプルコード
サンプル1: 商品表示数を10に設定
このサンプルコードは、ショップページに常に10商品のみを表示する設定を行います。
add_filter( 'loop_shop_per_page', function( $cols ) {
return 10;
});
- 引用元: https://developer.wordpress.org/reference/functions/add_filter/
サンプル2: ログインしているユーザーのために商品数を増やす
このコードでは、ユーザーがログインしている場合、商品表示数を20に増やします。
add_filter( 'loop_shop_per_page', function( $cols ) {
return is_user_logged_in() ? 20 : $cols;
});
- 引用元: https://developer.wordpress.org/reference/functions/add_filter/
サンプル3: マンスリーセール中は特定の商品数を表示
特別なセール期間中の表示商品数を30に設定する例です。
add_filter( 'loop_shop_per_page', function( $cols ) {
return ( date('n') == 12 ) ? 30 : $cols; // 12月の場合に30商品表示
});
- 引用元: https://developer.wordpress.org/reference/functions/add_filter/
サンプル4: デバイスによる商品数の変更
このサンプルは、デバイスの幅によって表示する商品数を異なる数に設定します。
add_filter( 'loop_shop_per_page', function( $cols ) {
if ( wp_is_mobile() ) {
return 12; // モバイルデバイスの場合
}
return 18; // デスクトップデバイスの場合
});
- 引用元: https://developer.wordpress.org/reference/functions/add_filter/
サンプル5: クッキーを利用したカスタマイズ
このサンプルでは、クッキーで保存されたユーザーの好みに応じて表示商品の数を変更します。
add_filter( 'loop_shop_per_page', function( $cols ) {
return isset($_COOKIE['preferred_product_count']) ? intval($_COOKIE['preferred_product_count']) : $cols;
});
- 引用元: https://developer.wordpress.org/reference/functions/add_filter/
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |
このように、loop_shop_per_page
フィルタを使用することで、WooCommerceストアの商品表示数を様々な条件で柔軟にコントロールすることが可能です。