J'ai développé un plugin personnalisé qui réécrit une partie du contenu de mes articles, mais lorsque je déplace un article dans la corbeille, l'action de hook 'save_post' est déclenchée et l'article n'est pas supprimé.
Une version simplifiée de mon code:
add_action('save_post', 'rewrite_post', 10, 2);
function rewrite_post($post_id) {
remove_action('save_post', 'rewrite_post');
$title = preg_replace('/\_/', ' ', get_the_title($post_id));
$my_post = array();
$my_post['ID'] = $post_id;
$my_post['post_title'] = $title;
$my_post['post_status'] = 'publish';
wp_update_post($my_post);
add_action('save_post', 'rewrite_post');
}
Comment puis-je empêcher ce crochet de se déclencher lorsque je supprime des messages?
Il est probablement plus facile de vérifier le statut du poste dans votre fonction.
Non testé:
add_action( 'save_post', 'rewrite_post', 10, 2 );
function rewrite_post( $post_id ) {
if ( 'trash' != get_post_status( $post_id ) ) {
remove_action( 'save_post', 'rewrite_post' );
$title = preg_replace( '/\_/', ' ', get_the_title( $post_id ) );
$my_post = array( );
$my_post['ID'] = $post_id;
$my_post['post_title'] = $title;
$my_post['post_status'] = 'publish';
wp_update_post( $my_post );
add_action( 'save_post', 'rewrite_post' );
}
}