WordPress 4.9.6店铺首页添加面包屑上方页头横幅失败求助
解决WordPress店铺首页添加页头横幅的问题
看起来你是想给设为首页的WooCommerce店铺页添加页头横幅,但现有代码没达到预期效果,我来帮你分析问题并给出可行方案:
先说说原代码的潜在问题
你的代码逻辑是获取第一个产品分类的自定义字段,但店铺首页本身并不是某个产品分类页面——这个逻辑可能和你实际需求不匹配(除非你确实想调用某个分类的横幅)。另外原代码还有几个小细节可以优化:
- 没有判断产品分类是否存在,为空时会触发报错;
get_term_meta默认返回数组,你直接取$content[0]['cat_header']的写法不够稳妥;- 如果代码放置在面包屑输出之后,自然看不到横幅效果。
方案1:给店铺页单独设置横幅(更符合需求)
如果你的目标是给店铺首页单独添加专属横幅,推荐用这个方法:
- 先给你的店铺页面(就是你设为首页的那个页面)添加自定义字段:
- 字段名设为
shop_header_banner,字段值可以填图片的短代码(比如从媒体库上传后复制的短代码),或者直接写<img>标签;
- 字段名设为
- 在
archive-product.php中,找到面包屑导航的代码(一般是woocommerce_breadcrumb();),在它之前插入以下代码:
if (is_shop()) { // 获取店铺页面的ID,WooCommerce有专门的选项存储这个ID $shop_page_id = get_option('woocommerce_shop_page_id'); // 读取自定义字段,第三个参数true直接返回字符串 $shop_header = get_post_meta($shop_page_id, 'shop_header_banner', true); if (!empty($shop_header)) { echo do_shortcode($shop_header); } }
方案2:修复原代码(如果要调用分类横幅)
如果你确实想显示第一个产品分类的横幅,可以优化原代码的逻辑,避免报错:
// 放在面包屑之前的位置 if (is_shop()) { $args = array( 'taxonomy' => 'product_cat', 'hide_empty' => true, // 只获取有产品的分类 'number' => 1 // 仅取第一个分类 ); $product_categories = get_categories($args); // 先判断分类是否存在 if (!empty($product_categories)) { $term_id = $product_categories[0]->term_id; // 直接获取分类的自定义字段,第三个参数true返回数组 $cat_meta = get_term_meta($term_id, 'cat_meta', true); if (!empty($cat_meta['cat_header'])) { echo do_shortcode($cat_meta['cat_header']); } } }
最后要注意的细节
- 确认代码放置位置:必须在面包屑导航输出之前插入,否则横幅会出现在面包屑下方;
- 检查自定义字段:如果是用插件添加的分类自定义字段,要确认字段名
cat_meta和存储结构完全匹配; - 图片路径验证:确保图片已经正确上传到媒体库,URL可以正常访问,没有权限或路径错误。
内容的提问来源于stack exchange,提问作者PriceCheaperton
相关产品推荐
相关产品推荐

