Добавляя действие к save_post, почта должна быть сохранена дважды, чтобы функция работала

Я написал следующую функцию, которая копирует все почтовые термины из таксономии «tribe_events_cat» в таксономию «категоризации», когда почта сохраняется. Существует ошибка, в которой для копирования копируемых терминов мне нужно дважды щелкнуть «обновить» (т. Е. Сохранить сообщение дважды).

Я считаю, что это происходит, потому что, когда я вызываю get_the_terms , сообщение еще не сохранено.

Есть ли способ обойти это, чтобы get_the_terms получил термины из недавно обновленного сообщения?

  function bam_save_event_cat( $post_id ) { $taxonomy = 'categoria'; $tribe_cats = get_the_terms( $post_id, 'tribe_events_cat'); foreach($tribe_cats as $tribe_cat) { if( empty($tribe_cat->name) ) continue; $catname = $tribe_cat->name; $cats[] = $catname; } wp_set_object_terms( $post_id, $cats, $taxonomy ); } function bam_save_event($post_id) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( !current_user_can( 'edit_post', $post_id ) ) return; if(get_post_type( $post_id ) == 'tribe_events' ) { remove_action( 'save_post', 'bam_save_event' ); wp_update_post( array( 'ID' => $post_id ) ); add_action( 'save_post', 'bam_save_event' ); bam_save_event_cat( $post_id ); } } add_action( 'save_post', 'bam_save_event' ); 

Solutions Collecting From Web of "Добавляя действие к save_post, почта должна быть сохранена дважды, чтобы функция работала"

Это удар в темноте, но попробовали ли вы использовать set_object_terms для функции bam_save_event_cat ?

 function bam_save_event_cat( $post_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids ) { $taxonomy = 'categoria'; $tribe_cats = get_the_terms( $post_id, 'tribe_events_cat'); foreach($tribe_cats as $tribe_cat) { if( empty($tribe_cat->name) ) continue; $catname = $tribe_cat->name; $cats[] = $catname; } wp_set_object_terms( $post_id, $cats, $taxonomy ); } function bam_save_event($post_id) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( !current_user_can( 'edit_post', $post_id ) ) return; if(get_post_type( $post_id ) == 'tribe_events' ) { remove_action( 'save_post', 'bam_save_event' ); wp_update_post( array( 'ID' => $post_id ) ); add_action( 'save_post', 'bam_save_event' ); add_action( 'set_object_terms', 'bam_save_event_cat', 10, 6 ); } } add_action( 'save_post', 'bam_save_event' ); 

Я думаю, что я столкнулся с той же проблемой.

Вы должны установить более высокий приоритет, чем значение по умолчанию 10 для вашего действия save_post. Приоритет определяется как третий аргумент при добавлении действия, как описано в Codex

Подобно :

 add_action( 'save_post', 'bam_save_event', 99 );