所有网络站点都显示为主博客

时间:2015-11-18 作者:JoeMoe1984

我现在在我们的一个网站上遇到了一个奇怪的问题。对于临时站点设置,我们从子域多站点安装切换到子文件夹安装。因此,所有URL都来自此:

site.website.com

到这个

staging.otherwebsite.com/site

问题是Wordpress似乎无法识别其他网站的标题和链接。它显示了10个站点,但它们都与主博客有相同的信息(相同的标题和指向仪表板编辑屏幕的相同链接)。

我尝试过更改配置文件以支持子文件夹多站点:

define(\'WP_ALLOW_MULTISITE\', true);
define( \'MULTISITE\', true );
define( \'SUBDOMAIN_INSTALL\', false );
$base = \'/\';
define( \'DOMAIN_CURRENT_SITE\', \'staging.otherwebsite.com\' );
define( \'PATH_CURRENT_SITE\', \'/\' );
define( \'SITE_ID_CURRENT_SITE\', 1 );
define( \'BLOG_ID_CURRENT_SITE\', 1 );
我还必须更改数据库表。我进入并更改了中每个站点的路径列wp_blogs 表,使其与正确的结构相匹配。我想我也为wp_site 还有桌子。

我的htaccess文件如下所示:

RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\\.php)$ $2 [L]
RewriteRule . index.php [L]
wordpress在菜单中显示所有站点,好像它们都有相同的标题和链接(基本上显示主站点10次,与我的站点数量相同),这可能是什么原因造成的?在将子域安装切换到子文件夹安装时,是否遗漏了任何步骤?如果有任何其他信息,我可以提供让我知道,我会添加它。

谢谢

UPDATE

我发布了一个答案,但它不起作用。。。充分地它暂时解决了这个问题。在调用之前调用此函数时get_blog_details 作用

现在是奇怪的部分,当我添加这个函数时wp_cache_flush() 在循环遍历每个博客id之前get_blog_details() 函数返回相同的日志详细信息。

当我在获取日志详细信息之前在循环中添加缓存刷新时,我会为每个日志获取适当的日志详细信息。当我删除flush函数时,问题又出现了。

我一直在研究这一点,以了解原因。关于这件事的任何细节都会帮助我度过难关。

1 个回复
最合适的回答,由SO网友:JoeMoe1984 整理而成

在深入研究wordpress核心文件之后,我发现在获取博客详细信息的过程中,有一个缓存功能。

是这一行ms-blogs.php 文件

$details = wp_cache_get( $blog_id . $all, \'blog-details\' );
事实证明,我有一个缓存版本的博客详细信息,这把以前安装的一些东西搞砸了。我检查了wp-config.php 文件和我确实启用了W3缓存。我通过冲洗暂时修复了它。我添加了此代码。

global $wp_object_cache;
$wp_object_cache->flush();
重新加载页面后,我注意到博客详细信息显示正确。

Update

好吧,我想这次我真的把它修好了。我禁用了w3缓存插件,但它对我不起作用,所以我认为问题来自其他地方。经过多次尝试和错误后,我进入了插件文件夹,并决定将w3cache插件文件夹重命名为其他文件夹。这显然解决了问题。我猜尽管Wordpress禁用了插件,但还是有东西引用了插件。

文件advanced-cache.phpobject-cache.php 需要删除才能停止引用w3caching插件。

您可以再次添加插件,它可能会再次运行。

我只是想分享一下,因为这让我有一段时间发疯了。