如何将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
相关产品推荐
相关产品推荐

