WooCommerce多值产品属性pa_ontwerper单独链接实现咨询
解决WooCommerce单品页面多属性值的链接问题
你当前的代码问题在于get_attribute('pa_ontwerper')返回的是逗号分隔的字符串,当属性有多个值时,会把所有值连在一起生成错误的链接。要实现每个值单独链接,需要先拆分字符串,再逐个处理:
修改后的代码示例:
// 获取属性值,得到逗号分隔的字符串 $ontwerper_values = $product->get_attribute('pa_ontwerper'); // 拆分字符串为数组,处理每个值 if (!empty($ontwerper_values)) { // 按逗号拆分,同时去掉每个值前后的空格 $values_array = array_map('trim', explode(',', $ontwerper_values)); // 遍历数组生成每个值的链接 $links = []; foreach ($values_array as $value) { // 生成单个值的链接,同时做安全转义 $links[] = '<a href="https://www.website.nl/attribute/' . esc_attr($value) . '/">' . esc_html($value) . '</a>'; } // 用逗号分隔输出所有链接 echo implode(', ', $links); }
代码说明:
explode(',', $ontwerper_values):把逗号分隔的字符串拆成数组,每个元素对应一个属性值array_map('trim', ...):去掉每个值前后的空格,避免值里带空格导致链接路径错误esc_attr()和esc_html():做安全转义,防止XSS漏洞,符合WooCommerce官方开发规范implode(', ', $links):把多个链接用逗号加空格拼接,保持和原显示格式一致
修改后,当属性有多个值时,每个值都会生成独立的正确链接,比如designer1链接到https://www.website.nl/attribute/designer1/,designer2链接到https://www.website.nl/attribute/designer2/,两者用逗号分隔显示。
内容的提问来源于stack exchange,提问作者Denny
相关产品推荐
相关产品推荐

