仅在首页(店铺页面)隐藏缺货产品的技术实现需求
WooCommerce 产品显示控制解决方案
针对你提出的「首页隐藏缺货产品,分类归档页正常显示」需求,可通过以下自定义代码实现,完全匹配你的场景:
核心代码
将以下代码添加到子主题的functions.php文件,或使用代码片段插件(如Code Snippets)运行:
add_action( 'pre_get_posts', 'hide_oos_on_shop_front' ); function hide_oos_on_shop_front( $query ) { // 仅对前台主店铺页面生效,排除后台及其他页面 if ( ! is_admin() && $query->is_main_query() && is_shop() ) { $meta_query = $query->get( 'meta_query', [] ); // 添加库存状态过滤:仅显示有货产品 $meta_query[] = [ 'key' => '_stock_status', 'value' => 'instock', 'compare' => '=', ]; $query->set( 'meta_query', $meta_query ); } }
逻辑说明
- 精准生效范围:通过
is_shop()仅锁定WooCommerce的主店铺首页,分类归档页(包括Tables、Recently Sold等)不受影响,完全符合你的示例需求 - 高效查询修改:使用
pre_get_posts钩子在查询执行前修改参数,比在产品循环里判断更节省资源 - 兼容原有逻辑:保留原有查询的
meta_query条件,不会和主题或其他插件的查询规则冲突
场景验证
- 售罄且归属Tables+Recently Sold的产品:首页隐藏,Tables/Recently Sold分类页正常显示
- 仅归属Recently Sold的售罄产品:首页隐藏,Recently Sold分类页正常显示
- 有货产品:所有页面正常展示
注意事项
- 优先使用子主题或代码片段插件添加代码,避免主题更新导致代码丢失
- 操作前请备份网站,避免出现意外
内容的提问来源于stack exchange,提问作者Syl Mulder
相关产品推荐
相关产品推荐

