我有一个高度优化的WordPress多站点(WPMU)安装,运行在Amazon EC2,RDS,Nginx,PHP-FPM,APC,BatCache和Memcached上。
APC仅在PHP级别运行,以缓存操作码,但我不将其用于WordPress的对象缓存。为此,我使用的是BatCache+Memcached。
所有这些都运行得非常好,在负载下超快,等等,但我只是遇到了一个意想不到的问题。
我以测试用户身份登录,创建了一个新博客,当我登录/wp-admin 时,它告诉我我没有权限。我注销,重新登录,同样的问题。然后我注销,重新启动Memcached,重新登录,问题得到解决。
我几乎可以肯定这与缓存有关。我可能需要挂钩到新的网站创建过程并从Memcached中清除一些键,但我不确定如何找到要清除的正确键。
请帮忙!;)
这与用户角色功能有关,我不是很担心,但如果是......这应该是将管理员功能重置为默认值的小脚本:
add_action( 'after_setup_theme', 'add_roles_caps' );
function add_roles_caps() {
$caps = array(
"edit_post",
"read_post",
"delete_post",
"edit_posts",
...
);
$roles = array(
get_role( 'administrator' ),
get_role( 'subscriber' ),
);
foreach ($roles as $role) {
foreach ($caps as $cap) {
$role->add_cap( $cap );
}
}
}
这是一个示例..您应该用此处列出的所有功能填充$caps数组