如何从WordPress对象缓存中清除用户权限?

时间:2012-11-16 18:08:17

标签: wordpress permissions memcached wpmu

我在Amazon EC2,RDS,Nginx,PHP-FPM,APC,BatCache和Memcached上运行了高度优化的WordPress多站点(WPMU)安装。

APC仅在PHP级别运行,以缓存操作码,但我没有将它用于WordPress的对象缓存。为此,我正在使用BatCache + Memcached。

所有这一切都运行得非常好,负载超快等等,但我遇到了一个意想不到的问题。

我以测试用户身份登录,创建了一个新博客,当我登录/ wp-admin时,它告诉我我没有权限。我退出了,重新登录,同样的问题。然后我退出,重新启动Memcached,重新登录并解决了问题。

我几乎可以肯定这与缓存有关。我可能需要挂钩新的网站创建过程并清除Memcached中的一些密钥,但我不确定如何找到正确的密钥来清除。

请帮忙! ;)

1 个答案:

答案 0 :(得分:0)

如果这与用户角色功能相关联,我不是很害羞,但如果它是...... 这应该是一个将管理员功能重置为默认值的小脚本:

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

这是一个示例..您应该使用列出here

的所有功能填充$ caps数组