关于WooCommerce中loop_shop_per_page过滤器的钩子位置问询
关于WooCommerce
loop_shop_per_page 过滤器的详细说明 嘿,很高兴看到你已经在靠loop_shop_per_page过滤器搞定店铺分页的自定义了——这个钩子确实是WooCommerce里调整商品列表每页数量的核心工具!
你找不到它的位置很正常,因为它不在模板文件里,而是藏在WooCommerce的核心查询类中:
- 具体文件路径:
woocommerce/includes/class-wc-query.php - 在这个文件里,你能找到
WC_Query类的get_loop_shop_per_page()方法,里面就是这个过滤器的定义,代码大概是这样的:
public function get_loop_shop_per_page() { return apply_filters( 'loop_shop_per_page', get_option( 'posts_per_page' ) ); }
这个方法的作用是:在渲染商品循环(店铺首页、商品分类页、标签页等)时,WooCommerce会调用它来获取每页要显示的商品数量,默认值是WordPress后台设置的posts_per_page(文章每页数量),而通过这个过滤器,我们可以轻松覆盖这个默认值。
额外的用法小提示
除了固定设置每页数量,你还可以根据不同页面动态调整,比如给特定分类设置不同的分页数量:
add_filter( 'loop_shop_per_page', 'custom_shop_per_page_by_category', 20 ); function custom_shop_per_page_by_category( $default_per_page ) { // 给"数码产品"分类设置每页16个商品 if ( is_product_category( 'digital-products' ) ) { return 16; } // 店铺首页设置每页8个 elseif ( is_shop() ) { return 8; } // 其他页面保留默认值 return $default_per_page; }
需要注意的是,这个过滤器只影响前端商品列表的分页数量,不会改变后台商品管理页面的显示数量哦。
内容的提问来源于stack exchange,提问作者Rudy Duchê
相关产品推荐
相关产品推荐

