Wordpress - 抱歉,您无权修改此项

时间:2017-01-26 18:30:57

标签: php wordpress ssl https themes

移动到新托管后,我的某个网站上出现了奇怪的错误消息

  

抱歉,您无权修改此项目。

我发现的解决方案并不适用于我:

  1. 我检查了所有前缀内容,因为我的perfix不是wp_,所以users_meta中的所有内容都是准确的,wp_options中也是如此。

  2. 我甚至尝试使用php代码插入新的管理用户,我也遇到了同样的错误。

  3. 我也试过停用所有插件&重置为默认主题,但没有任何效果。

  4. 我移动的服务器有ssl,所以它的https连接覆盖了db内所有url的更新。

    另一个问题是,当我登录wp-admin时,它会显示相同的消息

      

    抱歉,您无权修改此项目。

    在前端,我看到功能齐全的wp-bar,所有按钮编辑页面/创建新帖子/页面/等。但是当我点击它时显示与上面相同的错误。

    有什么建议吗?

2 个答案:

答案 0 :(得分:3)

如果您正在尝试编辑类别/自定义分类,并且出现此错误,则应执行以下操作。

  1. wp_term_taxonomy表中查看与多个分类标识关联的术语ID。这些记录是错误的根本原因。以下查询应该可以帮助您找到它。

    SELECT term_id, COUNT(term_id) FROM wp_term_taxonomy GROUP BY term_id HAVING COUNT(term_id) > 1;
    
  2. 检查taxonomy表中您要保留的wp_term_taxonomy列,并删除其他taxonomy记录。删除前请参阅#3。

  3. 您还应该从wp_term_relationships表中删除您要从term_taxonomy_id表中删除的相应wp_term_taxonomy的记录。

  4. 提示 在对数据库执行任何DELETE查询之前备份数据库。

答案 1 :(得分:1)

停用所有插件并逐个激活它们将有助于找到罪魁祸首。如果您无法进入仪表板,请使用FTP并重命名插件目录。

另一种解决方案

我发现另一种解决方案是编辑wp-includes/capabilities.php

替换此代码

function current_user_can( $capability ) {
    $current_user = wp_get_current_user();

    if ( empty( $current_user ) )
        return false;

    $args = array_slice( func_get_args(), 1 );
    $args = array_merge( array( $capability ), $args );

    return call_user_func_array( array( $current_user, 'has_cap' ), $args );
}

有了这个

function current_user_can( $capability ) {
    $current_user = wp_get_current_user();

    if ( empty( $current_user ) )
        return false;

    if (is_admin())
        return true;
    $args = array_slice( func_get_args(), 1 );
    $args = array_merge( array( $capability ), $args );

    return call_user_func_array( array( $current_user, 'has_cap' ), $args );
}

如果有效,您仍需要找到合适的解决方案,因为capabilities.php是核心文件&任何更新都会覆盖您的代码。