Perché usare add_action per gli shortcode?
Vorrei creare degli shortcode
, ma alcuni tutorial suggeriscono di usare add_action
:
add_action( 'init', 'register_shortcodes');
Ma ho letto un altro tutorial in cui l'autore non lo ha usato, inserendo semplicemente questo in functions.php
:
add_shortcode( 'recent-posts', 'recent_posts_function' );
Qual è il metodo migliore e perché usare add_action
?
Se dai un'occhiata alla pagina del Codex su add_shortcode()
, non troverai nulla riguardo alla necessità di un add_action()
prima di poter utilizzare add_shortcode()
.
Quindi, puoi semplicemente inserire il tuo add_shortcode()
direttamente nel tuo functions.php
. È quello che faccio anch'io.
Vedi questo articolo - WordPress Shortcodes: Una Guida Completa sull'uso degli shortcode e le migliori pratiche.

A volte è necessario utilizzare l'azione 'init'. Ad esempio, in questo momento sto modificando un tema basato pesantemente su widget e pannello di personalizzazione. Ho provato ad aggiungere uno shortcode personalizzato senza azioni e ho ottenuto errori durante il salvataggio del contenuto nel pannello Personalizza. L'azione garantisce il corretto ordine di esecuzione delle funzioni. In pratica dice "ehi shortcodes! Prima caricherò le funzioni più importanti, poi voi!"

Senza ripetere troppo quanto già trattato nelle risposte precedenti; questo è semplicemente un approccio basato sulle migliori pratiche. Spesso lo utilizzo nello sviluppo di plugin quando ho bisogno di classi separate come nel template starter del plugin wppb.me.
Ha senso registrare tutti i tuoi hook per l'admin nel loader. Nel caso dello shortcode, puoi aggiungere l'hook add_action per lo shortcode nel metodo del loader degli hook:
/**
* Registra tutti gli hook relativi alle funzionalità dell'area admin
* del plugin
*/
private function define_admin_hooks() {
$plugin_admin = new instance( $this->get_plugin_name(), $this->get_version() );
$this->loader->add_action( 'init', $plugin_admin, 'register_shortcodes');
}
Il principale vantaggio che ho con questo approccio è la facilità di manutenzione del codice poiché è modulare. Puoi aggiungere diversi altri hook nello stesso metodo, il che rende più semplice tracciare e modificare le cose, specialmente per un plugin di grandi dimensioni.
Significa quindi che nella classe dove vuoi usare add_shortcode
non devi eseguire l'hook dell'azione nel metodo costruttore, puoi ora usarlo in un metodo personalizzato come:
public function register_shortcodes(){
add_shortcode('recent-posts', array($this, 'recent_posts_function'));
}
