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

如何在WooCommerce自定义页面按字母顺序展示指定产品属性值

在WooCommerce自定义页面按字母顺序展示指定产品属性值

修正后的完整代码

<?php
// 自定义WP查询参数,可根据需求调整(如指定产品分类、数量等)
$args = array(
    'post_type' => 'product',
    'posts_per_page' => -1, // 显示所有产品
    // 可添加其他筛选条件,如产品分类:'product_cat' => 'your-category-slug'
);

$query = new WP_Query($args);
$products_by_attribute = array(); // 按属性值分组存储产品

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        global $product;

        // 获取产品所有属性
        $attributes = $product->get_attributes();

        // 指定要展示的属性slug(此处为color)
        $target_attr_slug = 'color';
        if (isset($attributes[$target_attr_slug])) {
            // 处理属性值:若为多选属性,值会用|分隔,需拆分处理
            $attribute_value = $attributes[$target_attr_slug]['value'];
            $values = explode('|', $attribute_value);
            
            foreach ($values as $val) {
                $val = trim($val); // 去除值首尾空格
                // 按属性值分组产品
                if (!isset($products_by_attribute[$val])) {
                    $products_by_attribute[$val] = array();
                }
                $products_by_attribute[$val][] = $product;
            }
        }
    }
    wp_reset_postdata(); // 重置查询数据,避免干扰后续全局查询

    // 按属性值进行不区分大小写的自然排序
    natcasesort($products_by_attribute);

    // 输出分组展示的HTML结构
    echo '<div class="attribute-groups">';
    foreach ($products_by_attribute as $attr_value => $products) {
        echo '<div class="attribute-group">';
        echo '<h3>' . esc_html($attr_value) . '</h3>';
        echo '<div class="product-items">';
        foreach ($products as $prod) {
            echo '<div class="product-item">';
            echo '<a href="' . esc_url($prod->get_permalink()) . '">';
            echo $prod->get_image(); // 输出产品缩略图
            echo '<p>' . esc_html($prod->get_name()) . '</p>';
            echo '</a>';
            echo '</div>';
        }
        echo '</div>'; // .product-items
        echo '</div>'; // .attribute-group
    }
    echo '</div>'; // .attribute-groups
} else {
    echo '<p>暂无产品</p>';
}
?>

关键优化说明

  • 属性值兼容处理:适配多选属性场景,将|分隔的多值拆分后单独分组,确保每个属性值都能正确关联产品。
  • 排序逻辑优化:用natcasesort()替代原代码的ksort(),实现不区分大小写的自然排序,对应你提供的Color属性值,排序后顺序为:Aa → Bb → green → green1 → green2 → red → red1 → yellow → yellow2。
  • 安全输出:所有前端输出内容通过esc_html()、esc_url()转义,避免XSS安全风险。
  • 完整展示结构:添加了属性值标题、产品缩略图、名称及跳转链接的HTML结构,直接满足页面展示需求。

内容的提问来源于stack exchange,提问作者jogin shar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:40:12