我一直在努力找出以下方案的解决方案。我有一个使用WP Job Manager插件的自定义帖子类型 - job_listing
。
我想要实现的是根据job_listing
帖子计数更改默认用户角色。
因此,默认情况下,用户的角色为'subscriber'
,但只要用户提交职位列表,此用户角色就会自动更改为'employer'
。
我把基于此的各种方法收集的代码放在一起。但我仍然无法使这件事发挥作用。
这是我在functions.php中的代码:
add_action ('publish_post', 'update_roles');
function update_roles ($post_type = 'job_listing', $post_status = 'publish') {
global $wpdb;
$author = wp_get_current_user();
$query = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = $author->ID AND post_type = '$post_type' AND post_status = '$post_status'";
$count = $wpdb->get_var($query);
if($count > 0 && current_user_can('subscriber'))
{
// Remove role
$author->remove_role( 'subscriber' );
// Add role
$author->add_role( 'employer' );
}
}
我在那里做错了什么?
答案 0 :(得分:0)
没有经过测试,但我从今天早上开始看这个问题并注意到没有人回答,所以我想回答它。请试试这个。
add_action( 'save_post', 'change_author_role', 3 );
function change_author_role( $post_id ){
$slug = 'job_listing';
global $post;
// If this isn't a 'job_listing' post, don't update it.
if ( $slug != $post->post_type ) {
return;
}
//here check if already a employer or admin
wp_update_user( array('ID' => get_current_user_id(), array( 'roles' => array( 'Subscriber', 'Administrator' ) ) ) );
//$role = array( 'Subscriber', 'Administrator' );
//$user = new WP_User(get_current_user_id());
//$user->set_role($role);
}