我想在我的子目录中使用相同的数据库(内容/用户/评论/元/类别等)安装另一个 wordpress。
我实际上想创建我的网站的移动版本。但我不想使用任何移动检测脚本或 css3 媒体查询。只想创建我的新主题(移动版)
例如;
主域也有子域;
maindomain.com // root
mobile.maindomain.com // sub directory
这怎么可能?
WordPress 的优点之一是代码中的大量钩子允许您扩展或覆盖核心功能。
解决此问题的一种方法是在您的 vhost 文件中为每个站点设置一个 Apache 环境变量,该变量可用于 WordPress 引导过程以覆盖主题和基本 URL 设置。
例如在 Apache vhost 添加:
SetEnv WP_CONTEXT main
和
SetEnv WP_CONTEXT mobile
(或者如果您使用不同的网络服务器,则等效)。
在 wp-config.php 中:
switch ($_SERVER['WP_CONTEXT']) {
case 'main':
define('WP_HOME','http://maindomain.com');
define('WP_SITEURL','http://maindomain.com');
break;
case 'mobile':
define('WP_HOME','http://mobile.maindomain.com');
define('WP_SITEURL','http://mobile.maindomain.com');
break;
}
这将根据环境变量设置基本 URL。
然后在插件中添加以下过滤器:
add_filter('template', 'change_theme');
add_filter('option_template', 'change_theme');
add_filter('option_stylesheet', 'change_theme');
function change_theme()
{
switch ($_SERVER['WP_CONTEXT']) {
case 'main':
return 'main';
break;
case 'mobile':
return 'mobile';
break;
}
这需要在插件中,以便在正常的主题加载过程之前加载(functions.php 是主题的一部分,因此为时已晚)。这些过滤器将拦截并覆盖数据库中的主题设置。
您不能直接这样做,因为 WP 将其 url 存储在数据库中。AFAIK 有一种方法可以在 sql 中“链接”表,所以它可能是这种方式 - 例如链接 wp_options 旁边的所有内容,但它仍然是一种棘手的方式。
我有同样的问题,它至少对我有用:
将此代码添加到移动主题中的functions.php:
remove_filter('template_redirect','redirect_canonical');
从这里阅读更多关于这个钩子的信息
在 wp-config.php 中添加这些:
定义('WP_HOME','http://mobile.maindomain.com'); 定义('WP_SITEURL','http://mobile.maindomain.com');
从这里阅读更多这些钩子
在移动版的 wordpress 安装中应用这些更改