You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将WooCommerce商品分类归档页商品名设为Meta关键词?

修复WooCommerce分类页商品名称作为Meta关键词的代码

你的代码存在几个关键问题,导致无法正常获取商品名称作为Meta关键词,以下是修正方案:

原代码的问题点

  • $loop_items 未定义,WooCommerce分类归档页需要通过正确方式获取当前分类下的商品
  • foreach 语句末尾多了分号,循环体未执行
  • $product 变量未实例化,无法调用get_name()方法
  • 变量名拼写错误:$kewords 应为 $keywords
  • $keywords 未初始化,直接使用.=会引发PHP警告
  • else 未加花括号,导致逻辑分支混乱
  • 关键词列表开头会多出一个逗号,影响格式

修正后的代码

<meta name="keywords" content="<?php
if ( is_product_category() ) {
    // 初始化关键词数组
    $keywords = array();
    // 获取当前分类下的商品查询对象
    global $wp_query;
    $products = $wp_query->posts;
    
    foreach ( $products as $product_post ) {
        // 将文章对象转为WooCommerce产品对象
        $product = wc_get_product( $product_post->ID );
        if ( $product ) {
            // 添加商品名称到数组
            $keywords[] = esc_html( $product->get_name() );
        }
    }
    // 把数组转为逗号分隔的字符串,避免开头有多余逗号
    echo implode( ', ', $keywords );
} else {
    // 非分类页时获取自定义关键词字段
    $key = get_post_meta( get_the_id(), 'keywords', true );
    if ( ! empty( $key ) ) {
        echo esc_html( $key );
    }
}
?>" />

代码说明

  • 使用全局$wp_query获取当前分类页的商品列表,无需额外查询
  • 用数组存储商品名称,最后通过implode生成规范的逗号分隔字符串,避免开头多余符号
  • 通过wc_get_product()将文章对象转为标准WooCommerce产品对象,确保能正确调用产品方法
  • 给else添加花括号,明确逻辑分支范围
  • 初始化变量并添加esc_html()确保输出内容安全,避免XSS风险

内容的提问来源于stack exchange,提问作者Eduardo Relax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:25:03