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

如何在WooCommerce中通过SKU直接跳转至指定商品变体页面

实现WooCommerce变体SKU的URL跳转与自动选中

原代码仅支持简单产品,要实现变体SKU的跳转并自动选中对应变体,需要分两步处理:后端跳转时携带变体ID参数,前端自动触发变体选择逻辑。

后端跳转代码(替换原有函数)

将原有代码替换为以下PHP代码,它会识别SKU对应的变体,跳转到父产品页面并携带变体ID参数:

add_action('template_redirect', 'sku_url_redirect_variation_support');
function sku_url_redirect_variation_support() {
    if (!isset($_GET['sku'])) return;

    $sku = wc_clean($_GET['sku']);
    $product_id = (int) wc_get_product_id_by_sku($sku);
    
    if (!$product_id) return;

    $product = wc_get_product($product_id);
    // 如果是变体产品,获取父产品链接并添加变体ID参数
    if ($product->is_type('variation')) {
        $parent_id = $product->get_parent_id();
        $parent_permalink = get_permalink($parent_id);
        $redirect_url = add_query_arg('variation_id', $product_id, $parent_permalink);
    } else {
        // 普通产品直接跳转
        $redirect_url = get_permalink($product_id);
    }

    wp_safe_redirect($redirect_url);
    exit;
}

前端自动选中变体的JS代码

添加以下JS代码,用于在父产品页面加载时,根据URL中的variation_id参数自动选中对应的变体选项:

add_action('wp_footer', 'auto_select_variation_from_url');
function auto_select_variation_from_url() {
    if (!isset($_GET['variation_id'])) return;
    ?>
    <script>
        jQuery(document).ready(function($) {
            var variationId = <?php echo esc_js($_GET['variation_id']); ?>;
            var $variationForm = $('form.variations_form');
            
            if (!$variationForm.length) return;

            // 获取变体对应的属性值
            $.getJSON($variationForm.attr('data-product_variations'), function(variations) {
                var targetVariation = variations.find(function(variation) {
                    return variation.variation_id === variationId;
                });

                if (!targetVariation) return;

                // 遍历所有属性,设置对应的选择框值
                $.each(targetVariation.attributes, function(key, value) {
                    var $select = $variationForm.find('select[name="' + key + '"]');
                    $select.val(value).trigger('change');
                });
            });
        });
    </script>
    <?php
}

代码说明

  1. 后端部分:通过SKU找到产品后,判断是否为变体,若是则跳转至父产品页面并附加variation_id参数;普通产品则保持原有逻辑。
  2. 前端部分:页面加载时读取URL中的variation_id,通过产品的变体JSON数据找到对应属性值,自动选中下拉框并触发变化事件,让WooCommerce加载对应变体的信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:48:18