在浏览站点/动态设置站点地址时保留两个(或多个)并行(子)TLD?


10

我正在该域下的一家德国NGO的网站上运行sub.example.org
最近,我sub.example.ch为其瑞士分拆增加了股票。

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

我进行了设置sub.example.ch/register,例如将正确显示在下找到的内容sub.example.org/register

但是,当瑞士访问者使用常规的站点链接浏览该站点时,他或她将不可避免地最终进入“常规”域,因为这些访问者使用了常规设置中定义的“ WordPress地址”(或“站点地址”) ,通过get_home_urlget_site_url()(或不那么深的对get_bloginfo()等物)。

理想情况下,我希望访问者继续在他或她用来访问该网站的域名下冲浪。因此,我想我必须以某种方式过滤提到的函数的返回值。据我所知,没有一个过滤器。

  1. 是否有人对这类事情有经验,并能得到一个体面的解决方案?

  2. 这可能是一个愚蠢的主意,我应该首先放任它吗?

Answers:


9

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

在你的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。我不知道是否有副作用或无效的情况。应该不会发生,但是要彻底测试。


我将对它进行彻底的测试。现在。
Johannes Pille

4
12小时后:正常工作。价值必须来自$_SERVER['HTTP_HOST']很简单,那也是我的方法。在回答这个问题的同时,我试图利用bloginfo_url插件中的过滤器。难道不能做的工作。但是,要将过滤放入配置文件中,我会经过几天的考虑(如果有的话)。该解决方案的结果超出了我的最大期望:不仅链接可以很好地解析,登录凭据也可以正常工作,甚至后端也不会阻塞!太棒了!
约翰内斯·皮尔

1
两个(子)域都指向同一物理位置,即WP安装(不是多站点)。这样做,您需要登录托管服务。创建子域时,必须指定文档根目录。在这里,选择与安装了WP的主域相同的路径。然后,添加代码。工作正常,请尝试考虑SEO(规范标签和替代标签)
Romain 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.