在 example.com/blog/ 和 m.example.com/blog/ 上显示 WordPress

发布于 2024-12-01 03:50:43 字数 334 浏览 0 评论 0 原文

我希望在移动子域上显示相同的 WordPress 博客,并在子文件夹中显示主域。这看起来如下:

  • example.com/blog/ (包含主主题和自定义)
  • m.example.com/blog/ (包含移动主题和自定义)

但是,这是否可能,或者我是否需要安装单独的博客和将主博客中的内容复制到移动博客上?

PS - 这是现阶段的测试环境,我将处理用户代理切换和 SEO重复内容注意事项。

I'm looking to display the same WordPress blog on a mobile subdomain and the main domain in a subfolder. This would look like the following:

  • example.com/blog/ (with main theme and customisations)
  • m.example.com/blog/ (with mobile theme and customisations)

However, is this possible or do I need to install a separate blog and duplicate content onto the mobile blog from the main blog?

PS - This is a test environment at this stage, and I will handle user-agent switching and SEO duplicate content considerations.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦在深巷 2024-12-08 03:50:43

这是可行的,但没有简单的、不引人注目的解决方案。

有一种简单的方法可以做到这一点。破解核心,找到 wp_set_wpdb_vars() wp-includes/load.php 并在 $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}";
}

这个技巧会将选项和元数据沙箱到两组不同的表中。这样它们就不会覆盖,但如果您对安装的插件使用不同的设置。如果您可以控制插件并防止设置冲突,您可以将选项表放入沙箱中。

在您的 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 之外,两者都必须具有相同的设置(dbname,前缀) >WP_HOME。如果您没有在 WP_HOME 和 WP_SITEURL,则可以使用一个文件。 php" rel="nofollow">wp-config.php

This is doable but you there's no simple unobtrusive solution.

There is ONE simple way to do this. Hack the core, find wp_set_wpdb_vars() in wp-includes/load.php and right after $prefix = $wpdb->set_prefix( $table_prefix ); add this:

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}";
}

This trick will sandbox options and metas into two different sets of tables. This way they will not overwrite but if you use different settings for plugins installed. You can just sandbox the options table if you have control over plugins and prevent settings collision.

In your wp-config.php you will need to do this:

if($_SERVER['SERVER_NAME'] == 'm.domain.tld'){
    require_once(dirname(__FILE__).'/wp-config-mobile.php');
}else{
    require_once(dirname(__FILE__).'/wp-config-mobiless.php');
}

Both must have same settings (dbname, prefix) except WP_SITEURL and WP_HOME. You can use one file if you don't hard define WP_HOME and WP_SITEURL in the wp-config.php.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文