Wordpress-抱歉,您不允许编辑此项目



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

抱歉,您不允许编辑此项目。

我发现的解决方案对我不起作用的是:

  1. 我检查了所有前缀,因为我的性能不是wp_,所以在users_metawp_options中一切都是准确的。

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

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

我要移动到的服务器有ssl,所以它的https功能包含数据库中所有url的更新。

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

抱歉,您不允许编辑此项目。

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

有什么建议吗?

如果您试图编辑类别/自定义分类法,但遇到此错误,则应该执行以下操作。

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

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

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

提示:在数据库上执行任何DELETE查询之前,请备份数据库。

停用所有插件并逐一激活它们将有助于找到罪魁祸首。如果您无法进入仪表板,请使用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是核心文件&任何更新都将覆盖您的代码

最新更新