Come creare un plugin child in WordPress
Vorrei creare un plugin child..
Spiegazione:
Ho un plugin genitore chiamato X. Questo funziona in modo indipendente (come altri plugin esistenti).
Ora ho deciso di aggiungere alcune funzionalità extra a quel plugin X (consideralo come un upgrade). Quindi voglio creare funzionalità extra attraverso un altro plugin Y, che dipenderà da (ed erediterà da) X.
Questo plugin Y non funzionerà senza il plugin X.
Come posso farlo?

Il modo migliore per farlo è avere il tuo plugin X realizzato con i propri hook per azioni e filtri, in modo che nuovi plugin (nel tuo caso Y) possano interagire con le funzioni e i dati del plugin X. Definire i tuoi hook è abbastanza facile e semplice.
Action Hook
dal codex:
Le azioni sono gli hook che il core di WordPress lancia in punti specifici durante l'esecuzione, o quando si verificano eventi specifici. Il tuo plugin può specificare che una o più delle sue funzioni PHP vengano eseguite in questi punti, utilizzando l'Action API.
esempio di un nuovo action hook:
Function whatever(){
//operazioni normali che fai di solito
do_action('Nome-Del-Tuo-Action-hook', $args1,$args2)
//operazioni normali che fai di solito
}
Ora possiamo interagire con quella funzione e usare i suoi argomenti ($args1,$args2) usando l'hook 'Nome-Del-Tuo-Action-hook'
add_action('Nome-Del-Tuo-Action-hook','hook_function_callback');
Filter Hook
dal codex:
I filtri sono gli hook che WordPress lancia per modificare testi di vario tipo prima di aggiungerli al database o di inviarli allo schermo del browser. Il tuo plugin può specificare che una o più delle sue funzioni PHP venga eseguita per modificare specifici tipi di testo in questi momenti, utilizzando la Filter API.
esempio di un nuovo filter hook:
Function whatever(){
//operazioni normali che fai di solito
$output = apply_filters('Nome-Del-Tuo-Filter-hook', $output,$args1,$args2)
//operazioni normali che fai di solito
}
Ora possiamo interagire con quella funzione, filtrare $output e usare i suoi argomenti ($args1,$args2) usando l'hook 'Nome-Del-Tuo-Filter-hook'
add_filter('Nome-Del-Tuo_hook','hook_function_callback');
Un buon esempio di questo sarebbe Contact Form 7
- Contact Form 7 - Addon Campaign Monitor
- Contact Form 7 Dynamic Text Extension
- Contact Form 7 Calendar
- Contact Form 7 Textarea Wordcount
- Contact Form 7 Customfield in mail
- Contact Form 7 to Database Extension
e molti altri che (quasi tutti) sono plugin che estendono le funzionalità di Contact Form 7 basandosi sui suoi hook.

Non penso che questa sia una buona soluzione, poiché l'intero motivo per cui si vorrebbe avere un plugin figlio anziché modificare il plugin originale è proprio per non dover modificare il plugin originale (o "genitore"). Gli hook nel plugin genitore per l'estensibilità sono utili, ma la soluzione del richiedente non poteva basarsi su di essi. (...come io e molti altri siamo sicuramente nella stessa situazione.)

Ho appena passato del tempo a farlo da solo e ho effettuato così tante modifiche che non potevo semplicemente sovrascrivere le azioni.
Ho creato questo strumento che ti permette di creare un plugin child, proprio come un child theme. Puoi apportare aggiornamenti al plugin e comunque aggiornarlo senza perdere le tue modifiche.
Sto postando questo qui perché è pertinente e spero che possa essere utile alla prossima persona che si imbatte in questo problema.
