Risposte:
In generale: Sì, attendi che un hook dedicato avvii il tuo codice. Non gettare mai un'istanza di oggetto nello spazio dei nomi globale. Ma initè raramente necessario.
Ti colleghi il più tardi possibile. Se il tuo primo codice viene eseguito wp_head, non utilizzare un hook precedente. Puoi persino agganciare a cascata :
add_action( 'wp_head', 'first_callback' );
function first_callback()
{
// do something
// then
add_action( 'wp_footer', 'second_callback' );
}
Per quanto riguarda il initgancio: utilizzare wp_loadedinvece. Quello che corre dopo inite dopo è ms_site_check()stato chiamato. In questo modo si evita di eseguire il plug-in su un sito secondario non valido in un'installazione su più siti. Tutto il resto è uguale.
Non vedo i grandi benefici di questa pratica, per questi motivi:
Le funzioni add_actione add_filteraggiungono solo una voce alla variabile globale $wp_filterche contiene tutti i filtri e le azioni. Vedere il fonte . Non chiama la tua funzione. Il codice verrà eseguito solamente quando la do_actione apply_filterssono chiamati (con adeguate nome gancio), che avviene molto tardi nel luogo in cui tali ganci dovrebbero essere.
Si potrebbe dire che così facendo la variabile globale diventerà $wp_filterpiù grande => più memoria richiesta. Ma penso che creare una nuova funzione abbia lo stesso problema.
Mettere tutto in una funzione ti costringe a ricordare tutti gli hook di ogni file nel tuo tema / plugin. Non faresti qualcosa del genere:
header.php: aggiungi hook e funzioni di callback per le cose che accadono nell'intestazione (come menu, registrazione script)content.php: aggiungi hook e funzioni di callback per filtrare il contenutoadmin-menu.php: aggiungi hook e funzioni di callback per aggiungere il menu admin(supponi che quei file siano inseriti nel tuo tema / plugin)
Invece, devi:
header.php, content.php,admin-menu.php=> Ciò ti renderà difficile sapere cosa succede quando guardi il contenuto del header.phpfile. Devi cercare di sapere quando questi callback vengono attivati.
E pensa alla situazione quando hai più classi nel tuo tema / plugin. Metti tutti i ganci di tutte le classi in un unico posto? O ogni classe ha una funzione wrapper che contiene tutti gli hook? È troppo ridondante!
Al di sopra di questi motivi, penso che sia uno stile personale :). Vedo che alcuni framework come Hybrid fanno quello che hai detto. A volte mi rende difficile scavare in quei quadri!
wp_loadede informazioni MS.