自定义帖子类型计数 - 更改用户角色

时间:2016-09-17 01:49:03

标签: php wordpress custom-post-type user-roles

我一直在努力找出以下方案的解决方案。我有一个使用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' );

   }

} 

我在那里做错了什么?

1 个答案:

答案 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);

}