Wordpress - 抱歉,您无权编辑此项目

Posted

技术标签:

【中文标题】Wordpress - 抱歉,您无权编辑此项目【英文标题】:Wordpress - Sorry, you are not allowed to edit this item 【发布时间】:2017-06-12 08:05:44 【问题描述】:

迁移到新主机后,我的一个网站上出现奇怪的错误消息

抱歉,您无权编辑此项目。

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

    我检查了所有前缀,因为我的前缀不是wp_,所以users_metawp_options 中的所有内容都是准确的。

    我什至尝试使用 php 代码插入新的管理用户,我得到了同样的错误。

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

我要转移到的服务器有 ssl,所以它的 https 连接包含 db 内所有 url 的更新。

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

抱歉,您无权编辑此项目。

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

有什么建议吗?

【问题讨论】:

您是否使用新的https url 更新了您的 SQL 数据库? 是的,我做到了。数据库中的每个 url 都带有 https。 你什么时候搬的网站? 你到底想做什么?您是在尝试编辑页面/帖子,还是在看到 WP 仪表板之前就收到错误消息?听起来也像前端的错误,是网站本身工作还是您只看到错误? 我的网站出现此错误。结果几乎每个表都关闭了自动增量标志,并且许多表也缺少主键标志。我还在主键列中发现了重复数据。我使用 MyPHP Admin 手动修复了表格。我已经看到应该更有效地工作的 SQL 查询。 【参考方案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;
    

    检查wp_term_taxonomy 表中您要保留的taxonomy 列并删除另一条taxonomy 记录。删除前参考#3。

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

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

【讨论】:

@Dragomir Ivanov, @Arsalan Mithani 添加以下行 - if (is_admin()) return true; 可能会导致安全漏洞。 这为我节省了很多时间,玛丽亚。谢谢!【参考方案2】:

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

【讨论】:

这是一个非常糟糕的解决方案。除了编辑核心之外,它还删除了所有功能检查 - 用户角色之间没有区别。 谢谢你,Mathani,你是互联网上唯一一位真正解释了安全检查地点的作者。这使我可以暂时暂停检查以修复损坏的管理员配置文件。我用了'return true;'为了有效地暂停该功能并允许仪表板访问,之后自然而然地将其重新打开。 永远不要编辑核心文件,因为当您将 WordPress 更新到较新版本时,您所做的所有更改都会丢失。 @mukto90 最后已经清楚地说明了您在评论中所说的内容。它仅显示检查发生的位置。让我突出显示

以上是关于Wordpress - 抱歉,您无权编辑此项目的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress错误 - 抱歉,您无权访问此页面。将网站从一个域迁移到另一个域后

访问被拒绝并获取 抱歉,在 grails 中将插件 Spring Security 核心升级到 2.0 版本后,您无权查看此页面

Wordpress 403 禁止“您无权访问此服务器上的 /。”

Wordpress 重新安装 - 您无权访问此服务器上的 /sitename/

Wordpress 403/404 错误:您无权访问此服务器上的 /wp-admin/themes.php

woocommerce结帐错误:您无权编辑此帖子