Автоматически измененяем автора при сохранении поста

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Суть задачи: создание и редактирование постов производится под админом (admin), и надо при создании и публикации поста менять автора на другова, например на «Вася».

Конечно сначало надо создать пользователя «Вася» с правом редактировать посты.

Код автоматической замены автора поста

После того как создали нужного пользоватля, получаем его user_id и запоминаем.

А теперь сам код, его добавляем в файл функции (functions.php) поста вашей темы.


add_action( 'save_post', 'rain_edit_author' );
function rain_edit_author( $post_id ){
  if ( ! wp_is_post_revision( $post_id ) ){
    remove_action('save_post', 'rain_edit_author');

    $author = 10; //user_id
    $my_post = array();
    $my_post['ID'] = $post_id;
    $my_post['post_author'] = $author;
    wp_update_post( wp_slash($my_post) );

    add_action('save_post', 'rain_edit_author');
  }
}

Действия основаны на хуке save_post которое срабатывает при сохранении поста.

Замена пользователя используя хук transition_post_status


add_action('transition_post_status', 'rain_edit_author', 10, 3);
function rain_edit_author( $new_status, $old_status, $post ){
  $post_id = $post->ID;
  if ( ! wp_is_post_revision( $post_id ) ){
    if('publish' === $new_status && 'publish' !== $old_status){
      remove_action('transition_post_status', 'rain_edit_author');

      $author = 10;
      $my_post = array();
      $my_post['ID'] = $post_id;
      $my_post['post_author'] = $author;
      wp_update_post( wp_slash($my_post) );

      add_action('transition_post_status', 'rain_edit_author', 10, 3);
    }
  }
}

Действие хука происходит при смене статуса поста.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *