san_jorich
@san_jorich
Творческий кодер

Как переименовать запись Wordpress перед публикацией?

Во избежание проблем с рандомными названиями вроде "111, 12345, qwerty" итд, пытаюсь написать функцию, которая перехватывает custom type post при публикации и переименовывает запись по заданным в произвольных полях поста данным..
Что-то идет не так..
add_action( 'wp_insert_post_data', 'es_eventRenamer', 20, 2 );

function es_eventRenamer( $data, $postarr ){
  global $post;
  if( ( empty( $_POST['post_type'] ) || 'dk_event' !== $_POST['post_type'] )
      || ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
      || ( 'dk_event' !== get_current_screen()->id )
      || ! current_user_can( 'edit_post', $postarr['ID'] )
  )   return $data;

  $data['post_title'] = $data["meta_input"]["event_type"] .' : '. $data["meta_input"]["start_date"].' в '.$data["meta_input"]["start_time"];

  return $data;
}

UPD:
Попробовал сделать вариант обновления с хуком wp_after_insert_post
add_action( 'wp_after_insert_post', 'es_eventRenamer', 10, 4 );
function es_eventRenamer( $post_id, $post, $update, $post_before ){

  $event_type = get_field( 'event_type', $post_id);
  $start_date = get_field( 'start_date', $post_id);
  $start_time = get_field( 'start_time', $post_id);
  
  if($post->post_type == "dk_events"){
    $event = array();
    $event['ID'] = $post_id;
    $event['post_title'] = $event_type->name.' '.$start_date.' в '.$start_time ;
    wp_update_post( wp_slash($event) );

  }
}

post_title исправляет, но выдает фаталочку Maximum execution time of 30 seconds exceeded
Как поправить ?
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы