我一直在考虑设置WordPress网络安装。直到我到达所需的域布局不太合适的地步之前,一切都很顺利。

我想有一个布局,如下所示:

博客。*。stackexchange.com

因此,例如,我想在一个看起来像:

blog.wordpress.stackexchange.com
blog.apple.stackexchange.com
博客。$ site.stackexchange.com

思考 我可以通过一些创意重写规则和手动DNS干预来完成此工作DNS中需要的子域)

从我的演奏和阅读WP 真的 希望这些网站成为下一个级别的域,因此在我的上面示例中,它希望主要的WP博客位于stackexchange.com上,而网络博客则位于wordpress.stackexchange.com上。

有什么方法可以实现我的所需效果,还是我应该走博客的路线。

有帮助吗?

解决方案

您可以使用 域映射器 为此插件。缺点是您可以手动配置每个子博客。

其他提示

您可以使用自定义的sunrise.php文件执行此操作。从本质上讲,这是域映射插件工作原理的方式,但是它的前端很漂亮。对于自定义的东西,您可以编写一些简单的PHP来做同一件事。

多站点的本质涉及找出要服务的站点。域映射插件通过创建wp_domain_mapping表并将信息存储在其中来实现此操作。因此,当它收到XXX.com的请求时,它会在该表中查看并看到与Blog_id 123相对应的。

首先,制作WordPress设置,并将其变为多站点。它的真正生活并不重要,因为我们将改变所有这些。为简单起见,我将其放在blog.stackexchange.com上,并使其成为子目录类型的网站(这些网站更容易)。创建的子目录可能是sl。 /wordpress, /苹果, /其他。

因此,是的,首先,您确实是在blog.stackexchange.com/wordpress中实现它。考虑一下您的登台环境。当您创建每个站点时,您可以在此处进行操作,直到决定打开映射为止。

要进行域映射,没有插件,您会做这样的事情:

第一步:添加 define( 'SUNRISE', 'on' ); 到您的wp-config.php文件的顶部。

第二步:在wp-content目录中创建一个sunrise.php文件。放 <?php 从顶部开始。

第三步:在Sunrise.php中,文件将成为确定加载哪个站点的逻辑。

您将基于 $_SERVER[ 'HTTP_HOST' ] 多变的。您如何做到这一点很容易:但是您想这样做。如果您只想写一条正则要寻找 '/blog\.(.*)\.stackexchange\.com/' 然后在数据库中查找该位,您可以做到这一点。

由于您在此处使用与“子目录”相同的slug,因此您不需要单独的表。您可以在主WP_BLOGS表中查找所需的网站。类似的东西:

$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );

拥有$ current_blog后,您需要以下代码:

$current_blog->domain = $_SERVER[ 'HTTP_HOST' ];
$current_blog->path = '/';
$blog_id = $current_blog->blog_id;
$site_id = $current_blog->site_id;
$current_site = $wpdb->get_row( "SELECT * from {$wpdb->site} WHERE id = '{$current_blog->site_id}' LIMIT 0,1" );
$current_site->blog_id = $current_blog->blog_id;

这可以预先定义$ current_blog和$ current_site全局变量,而不是让WordPress'MU函数执行此操作。

这足以使网站启动并正常工作(在使DNS指向它并将虚拟托管物进行整理后),但是HTML代码中使用的大多数静态URL仍会指向Blog.stackexchange.com /wordpress,因为那是该网站的真正位置。另外,规范URL功能可能不喜欢URL,也会重定向您。

为了解决这些问题,您还可能想预先定义与网站相关的几个URL。 WP_SITEURL和WP_HOME之类的东西。另外,wp_content_url,wp_plugin_url和wpmu_plugin_url。这应该涵盖调整的大多数URL案例。

最后,您需要设置“ cookie_domain”。由于您可能希望在整个内容中共享登录名,因此您可以将其设置为stackexchange.com,如果您不希望它们共享登录名,甚至更高。

如果您想谈论将普通的stackexchange登录系统集成到WordPress中,我也可以回答有关此问题的问题,但是这将更详细地详细介绍一个答案。 :)

如果您想提供更多帮助,请随时给我发送电子邮件。很高兴协助:wordpress.org的奥托。

许可以下: CC-BY-SA归因
scroll top