如何将特定WooCommerce链接的shop子域名替换为www?
解决WooCommerce集成非WordPress网站时的URL跳转错误问题
你遇到的核心问题是当前代码依赖$_SERVER['HTTP_HOST']生成URL,但在shop.mydomain.dk的子域名环境中,这个变量返回的是当前子域名,导致拼接后的URL出现重复域名的错误(https://shop.mydomain.dk/www.mydomain.dk/cart.php)。以下是两种可靠的修复方案:
方案1:硬编码正确的基础URL
直接指定目标域名,避免环境变量带来的不确定性:
<?php define('WP_USE_THEMES', false); require('./shop/wp-load.php'); if (!function_exists('WC')) { die('WooCommerce er ikke aktiv'); } // 定义正确的目标基础URL define('CORRECT_BASE_URL', 'https://www.mydomain.dk'); // 重写购物车URL function custom_cart_url($url) { return CORRECT_BASE_URL . '/cart.php'; } add_filter('woocommerce_get_cart_url', 'custom_cart_url'); // 重写结账URL function custom_checkout_url($url) { return CORRECT_BASE_URL . '/checkout.php'; } add_filter('woocommerce_get_checkout_url', 'custom_checkout_url'); // 重写返回商店的跳转URL function custom_shop_url($url) { return CORRECT_BASE_URL . '/shop.php'; } add_filter('woocommerce_return_to_shop_redirect', 'custom_shop_url');
方案2:动态替换域名
如果需要保留协议的自动判断(HTTP/HTTPS),可以通过字符串替换将错误的子域名替换为www:
<?php define('WP_USE_THEMES', false); require('./shop/wp-load.php'); if (!function_exists('WC')) { die('WooCommerce er ikke aktiv'); } // 生成正确的目标域名 function get_correct_domain() { $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http"; // 将shop子域名替换为www $host = str_replace('shop.mydomain.dk', 'www.mydomain.dk', $_SERVER['HTTP_HOST']); return $protocol . "://" . $host; } // 重写购物车URL function custom_cart_url($url) { return get_correct_domain() . '/cart.php'; } add_filter('woocommerce_get_cart_url', 'custom_cart_url'); // 重写结账URL function custom_checkout_url($url) { return get_correct_domain() . '/checkout.php'; } add_filter('woocommerce_get_checkout_url', 'custom_checkout_url'); // 重写返回商店的跳转URL function custom_shop_url($url) { return get_correct_domain() . '/shop.php'; } add_filter('woocommerce_return_to_shop_redirect', 'custom_shop_url');
说明
- 方案1的优势是稳定性最高,适合域名固定的场景;
- 方案2适合需要自动适配HTTP/HTTPS协议的场景,同时确保域名替换的准确性;
- 两种方案都能直接修正“更新购物篮”和“结账”按钮的跳转目标,使其指向
www.mydomain.dk下的对应页面。
内容的提问来源于stack exchange,提问作者Keld Høfler
相关产品推荐
相关产品推荐

