WordPress: modifica post al salvataggio

Vuoi che wordpress controlli ogni volta che un post viene salvato e faccia qualcosa? Perfetto: lo puoi fare. Basta semplicemente usare un’azione prevista dal sistema. Questo tipo di azioni, che vengono chiamate in caso di determinati eventi, si chiamano hook.

In questo caso quella da usare si chiama save_post, che è  sostituito le azioni publish_post e publish_page. Ci sarebbe anche la pre_post_update, ma funziona solamente in aggiornamento e non in creazione.

 

save_post: come funziona

Usare questa azione è abbastanza banale: la si richiama tramite questa semplice riga di codice:

add_action( 'save_post', 'mia_funzione_al_salvataggio' );

Questa istruzione (da inserire in function.php o in un plugin) comunica a WordPress che ogni volta che avviene un salvataggio di un post o di una pagina deve richiamare la funzione mia_funzione_al_salvataggio passandole come parametri l’id del post salvato. Importante: questa funzione viene chiamata dopo che il post / pagina è stato salvato.

Dentro la funzione potete fare tutto ciò che volete, compreso modificare il post. Ma attenzione: modificare il post significa gestire l’oggetto post, modificarne alcune parti, quindi salvarlo. Quando lo salvate si alza nuovamente l’hook e generate un loop. Per evitare questo, prima del salvataggio, dovete rimuovere l’hook e ricrearlo!

 

save_post: esempio completo

Azione, recupero del post, salvataggio.

add_action( 'save_post', 'on_post_saved' );
function on_post_saved($post_id){
 //leggo il post
 $post = get_post( $post_id);

 //eseguo azioni sull'oggetto post
 $post->post_title = str_ireplace("niente","nulla",$post->post_title);

 //tolgo hook - salvo - rimetto hook
 remove_action('save_post', 'on_post_saved');
 wpmrx_update_post( $post );
 add_action( 'save_post', 'on_post_saved' );
}

Tutto chiaro amici? 🙂

Loading Facebook Comments ...

4 pensieri su “WordPress: modifica post al salvataggio

    1. Merlinox Autore articolo

      Ho scritto il post proprio perché prima ho creato qualcosa che mi serviva. Praticamente ho un blog che riceve contenuti da fonti esterne: spesso ci sono dei prefissi nei TITLE non corretti. Con questi li fisso direttamente.
      Ovvio potevo usare anche un filtro nel content, però così lo fai una volta e non hai più “carico”.

      Altre cose che puoi fare è inviare notifiche, scatenare dei trigger, che min*hia ne so… 😉

      Rispondi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *