【问题标题】:why does set_role cause internal server error 500?为什么 set_role 会导致内部服务器错误 500?
【发布时间】:2019-01-15 01:39:33
【问题描述】:

我对 php 和 wordpress 环境相当陌生。无论如何,我已经着手创建一个插件,使用 wp-cron 以设定的时间间隔更新用户的角色...... 但是,我想我错过了一些东西,因为每当我尝试使用 set_role(或 add_role)时,它都会导致内部服务器错误 500....

我正在尝试制作的插件适用于 wordpress 5.0.3 多站点,它只会在其中一个站点上激活。 在激活和测试插件之前,我使用 Justin Tadlock 的插件“成员”创建了自定义角色。 调试了一下,好像可以获取到对应角色的用户对象,但是尝试改变角色会导致服务器报错。

// Get all users with specific role
$all_users_with_role = get_users( 'role=custom_role' );

// Go through users and update role
foreach ( $all_users_with_role as $user ) {

    $user_role = new WP_User( $user->ID ); // This works fine
    $user_role->set_role( 'new_custom_role' ); // This doesn't...
}

在循环中执行此操作时,代码将显示有具有自定义角色的用户:

echo '<span>' . esc_html( $user_role->user_email ) . '</span>';

但是,使用 set_role、add_role 或 remove_role 会导致错误。

我有什么遗漏吗?它不知道我要分配的角色吗?

【问题讨论】:

    标签: php wordpress plugins


    【解决方案1】:

    我不能发表评论,所以我现在在这里发表评论: 您应该获得更多调试信息,可能会为您提供有关正在发生的事情的线索,并让其他人在这里帮助您。

    https://codex.wordpress.org/Debugging_in_WordPress

    在调试日志或 WP 调试输出中查找 500 服务器错误并将信息粘贴到此处。

    【讨论】:

    • 哦,谢谢伙计 :) 我激活了调试,发现它在 meta.php 文件中抛出了“未捕获的错误:调用未定义的函数 get_user_by()”。我进行了一些挖掘,发现这很可能是因为我尝试挂钩并在插件文件本身中进行挂钩......我对其进行了更改,因此它改为挂钩到预定事件并且它可以工作^_^
    • 我很高兴它成功了:谷歌搜索调试/日志中的特定错误通常会提供很好的线索或直接修复。几乎总是有人和你有同样的问题,帮助了我无数次。保重马克!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2012-03-29
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多