首页 > 解决方案 > 有条件地根据发布的帖子数量更新角色?

问题描述

我想根据帖子的数量有条件地更新用户角色。

例如,当用户达到 5 个帖子时,订阅者角色会自动升级为编辑者角色。

我怎样才能用下面的代码做到这一点?(此代码仅在用户登录时更改其角色。)

function custom_update_roles( $user_login, $user ) {
if ( ! empty( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( "translator", $user->roles ) ) {
$user_id = wp_update_user( array( 'ID' => $user->ID, 'role' => 'editor' ) );
if ( is_wp_error( $user_id ) ) {
// Error.
} else {
 // Success.
}
} else {
// This user is not a subscriber.
}
}
}
add_action( 'wp_login', 'custom_update_roles', 10, 2 );

标签: wordpress

解决方案


您应该查看 save_post 挂钩,这是在保存帖子时触发的。

https://codex.wordpress.org/Plugin_API/Action_Reference/save_post

您可以在该挂钩中获得帖子 ID,因此您可以轻松检查帖子是否实际发布(或者是否只是草稿),检查用户的帖子总数,并相应地更改其角色。


推荐阅读