2016-09-17 6 views
0

Я пытался найти решение для следующего сценария. У меня есть настраиваемый тип сообщения - job_listing с использованием плагина Job Job Manager.Пользовательский тип почтового типа - изменение роли пользователя

Я пытаюсь добиться того, чтобы изменить роль пользователя по умолчанию в зависимости от количества сообщений 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

Не проверено, но я смотрел этот вопрос с утра и заметил, что никто не отвечает, поэтому я решил ответить на него. пожалуйста, попробуйте это.

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

} 
+0

Привет, спасибо за усилия, пытался ваше решение, но нет, до сих пор, кажется, не делать ничего .. –

+0

@JoeBloggs я просто обновил код, чтобы предоставить идентификатор автора 'wp_update_user 'попробуйте это или нам нужно изменить действие. –

+0

большое спасибо. Я получаю синтаксическую ошибку в этой строке вашего кода: 'wp_update_user ('ID' => $ _POST ['listing_author'], array ('role' => array ('employer')));' и просто может Не поймите, что там может быть. Можете ли вы дважды проверить? –