web-dev-qa-db-fra.com

Le crochet d'action 'save_post' est déclenché lors de la suppression des publications

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?

4
Nkoyan

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' );
    }
}
3
vancoder