【发布时间】:2011-08-24 08:37:28
【问题描述】:
我希望在移动子域和子文件夹中的主域上显示相同的 WordPress 博客。如下所示:
- example.com/blog/(带有主题和自定义)
- m.example.com/blog/(带有移动主题和自定义)
但是,这可能吗?还是我需要安装一个单独的博客并将内容从主博客复制到移动博客上?
PS - 这是现阶段的测试环境,我将处理用户代理切换和SEO 重复内容注意事项。
【问题讨论】:
我希望在移动子域和子文件夹中的主域上显示相同的 WordPress 博客。如下所示:
但是,这可能吗?还是我需要安装一个单独的博客并将内容从主博客复制到移动博客上?
PS - 这是现阶段的测试环境,我将处理用户代理切换和SEO 重复内容注意事项。
【问题讨论】:
这是可行的,但你没有简单的不引人注目的解决方案。
有一种简单的方法可以做到这一点。破解核心,在wp-includes/load.php 中找到wp_set_wpdb_vars(),然后在$prefix = $wpdb->set_prefix( $table_prefix ); 之后添加:
if($_SERVER['SERVER_NAME'] == 'm.domain.tld'){
$wpdb->options = "mobile_{$wpdb->options}";
$wpdb->postmeta = "mobile_{$wpdb->postmeta}";
$wpdb->commentmeta = "mobile_{$wpdb->commentmeta}";
}else{
$wpdb->options = "mobiless_{$wpdb->options}";
$wpdb->postmeta = "mobiless_{$wpdb->postmeta}";
$wpdb->commentmeta = "mobiless_{$wpdb->commentmeta}";
}
这个技巧会将options and metas 沙箱化到两组不同的表中。这样他们就不会覆盖,但如果您对安装的插件使用不同的设置。如果您可以控制插件并防止设置冲突,则可以将options table 沙箱化。
在您的wp-config.php 中,您需要这样做:
if($_SERVER['SERVER_NAME'] == 'm.domain.tld'){
require_once(dirname(__FILE__).'/wp-config-mobile.php');
}else{
require_once(dirname(__FILE__).'/wp-config-mobiless.php');
}
除了WP_SITEURL 和WP_HOME 之外,两者必须具有相同的设置(数据库名称,前缀)。如果您没有在wp-config.php 中硬定义WP_HOME 和WP_SITEURL,则可以使用一个文件。
【讨论】: