Во избежание проблем с рандомными названиями вроде "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
Как поправить ?