问题描述

我正在 sub.example.org 域下运行一个德国 NGO 站点。最近,我为其瑞士 spin-off 添加了 sub.example.ch

两个 (子) 域都指向相同的物理位置,WP 安装 (不是多站点) 。

我有这样的设置,例如,sub.example.ch/register 将正确显示 sub.example.org/register 下找到的内容。

但是,当瑞士访问者使用常规的 on-site 链接冲浪该网站时,他或她将不可避免地在”regular” 域中使用,因为这些域可以通过 get_home_urlget_site_url()(或者它们的 less-deep) 在一般设置中使用”WordPress address”(或”site address”) get_bloginfo()等同物) 。

理想情况下,我希望访问者可以在他或她曾经到达该网站的域名下继续浏览。因此,我想我必须以某种方式过滤上述函数的返回值。据我所知,一个过滤器不存在。

  1. 有谁有这样的事情的经验和体面的解决方案吗?

  2. 这可能是一个愚蠢的想法,我应该放在首位吗?

最佳解决方案

您可以过滤主机的选项请求。

在您的 wp-config.php 下面的行…

require_once ABSPATH . 'wp-settings.php';

… 添加以下行:

add_filter( 'pre_option_home', 'set_current_host' );
add_filter( 'pre_option_siteurl', 'set_current_host' );

function set_current_host()
{
    return 'http://' . $_SERVER['HTTP_HOST'];
}

add_filter()不可用,您应该将此代码保存在 wp-config.php 中。我不知道是否有副作用或不起作用的情况。不应该发生,而是彻底测试。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。