wp_update_post no tipo de postagem personalizado específico

Em primeiro lugar, sinto muito o meu pobre inglês, quando eu upadte uma publicação, esse código muda o slug de postagem para um valor de campo de custo “profileid”.

add_action('save_post', 'my_custom_slug'); function my_custom_slug($post_id) { //Check it's not an auto save routine if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return; //Perform permission checks! For example: if ( !current_user_can('edit_post', $post_id) ) return; //If calling wp_update_post, unhook this function so it doesn't loop infinitely remove_action('save_post', 'my_custom_slug'); //call wp_update_post update, which calls save_post again. Eg: wp_update_post(array('ID' => $post_id, 'post_name' =>get_post_meta($post_id,'profileid',true))); // re-hook this function add_action('save_post', 'my_custom_slug'); } 

Isso funciona bem, mas como eu posso usar isso para apenas um tipo de postagem personalizado específico? Meu tipo de postagem personalizado é “mestres” … eu usei isso, mas não funciona! Alguém pode ajudar?

 add_action('save_post', 'my_custom_slug'); function my_custom_slug($post_id) { $slug = 'masters'; // If this isn't a 'masters' post, don't update it. if ( $slug != $post->post_type ) return $post_id; //Check it's not an auto save routine if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return; //Perform permission checks! For example: if ( !current_user_can('edit_post', $post_id) ) return; //If calling wp_update_post, unhook this function so it doesn't loop infinitely remove_action('save_post', 'my_custom_slug'); //call wp_update_post update, which calls save_post again. Eg: wp_update_post(array('ID' => $post_id, 'post_name' =>get_post_meta($post_id,'profileid',true))); // re-hook this function add_action('save_post', 'my_custom_slug'); } 

Solutions Collecting From Web of "wp_update_post no tipo de postagem personalizado específico"

Você pode parar de executar a function se a postagem não for de um tipo de publicação específico. Você pode usar get_post_type() para isso.

 if( 'masters' != get_post_type( $post_id ) ) return; 

Apenas não use a ação save_post , use "save_post_{$post->post_type}" vez disso. Ele triggers bem antes do save_post , e você obtém a mesma informação.

Exemplo para os masters tipo de postagem:

 add_action( 'save_post_masters', 'my_custom_slug', 10, 2 ); function my_custom_slug( $post_id, \WP_Post $post ) { }