Modo corretto di modificare il plugin


15

Qual è il modo migliore per modificare un plugin? Spesso desidero apportare piccole modifiche a una o due funzioni all'interno di un plug-in di grandi dimensioni. Ciò è facile, ma devo usare i commenti per contrassegnare le mie modifiche e modificare nuovamente il plugin dopo un aggiornamento. Idealmente, vorrei lasciare il plugin da solo e apportare le mie modifiche altrove, proprio come facciamo con temi e temi figlio. Posso creare un plug-in che richiede il plug-in padre e lo sostituirà?


1
Seleziona "Estendi senza modificare" . Ritengo che questa sia la soluzione praticamente migliore. Controlla questo link per i dettagli - Il modo giusto di personalizzare un plugin WordPress
Eugine Joseph,

Risposte:


7

IMHO, l'approccio migliore è o fork del plugin per mantenere le modifiche, oppure inviare patch allo sviluppatore del plugin, per fare in modo che le modifiche facciano parte del plugin originale.

Creare un "Child Plugin" non è davvero facile. Il concetto di "Child Theme" si applica veramente i file dei modelli che vengono utilizzati, dà fastidio solo rispetto alle funzioni a tema (e infatti, il functions.phpfile da entrambi genitore e bambino vengono caricati, che non causare problemi per impropriamente codificati functions.phpi file in entrambi il figlio o genitore Tema).


I tipi di modifiche che sto apportando sono specifici del sito e quindi non credo che il fork o l'invio di patch sarebbe appropriato. Ne terrò sicuramente conto per ulteriori miglioramenti generali ai plugin.
Mike Wheaton,

Ma il fork è fondamentalmente quello che stai già facendo . Fondamentalmente, queste sono le tue opzioni: fork o patch. @Chris_O offre un buon modo per essere in grado di estrarre gli aggiornamenti automatici dall'upstream, mantenendo al contempo il tuo plugin biforcuto.
Chip Bennett,

7

Il modo "giusto" dipende ovviamente dal plugin. Alcuni plugin sono più facili da modificare rispetto ad altri, ma la maggior parte dei plugin può effettivamente essere modificata da altri plugin.

Ad esempio, se un plugin ha una funzione agganciata a WordPress con un'azione, allora è semplice per te creare un altro plugin che sgancia quella funzione con remove_action e quindi aggiunge la tua funzione di sostituzione. Questo tipo di metodo ti permetterà di sostituire le singole funzioni nei plugin con le tue versioni modificate, senza modificare il plugin originale.

Lo stesso concetto funziona con i filtri, ovviamente.


4

Il modo migliore sarebbe semplicemente clonarlo e cambiare il nome del plugin nell'intestazione e cambiare il nome della directory. In questo modo potresti anche avere l'originale installato ma non attivato in modo da ricevere avvisi quando vengono rilasciati gli aggiornamenti.

<?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
License: A "Slug" license name e.g. GPL2
*/
?>

Ciò richiede ancora di esaminare le nuove versioni del plug-in per trovare le modifiche (suppongo che uno strumento di confronto delle versioni sarebbe di aiuto) e quindi di copiarle nel mio plug-in personalizzato. Suppongo di poter scaricare il plug-in e utilizzare SVN per unire le modifiche con la mia versione personalizzata.
Mike Wheaton,

2
C'è un collegamento diretto al file diff sul collegamento del registro di sviluppo nella pagina dei plugin. Ad esempio, qui viene generato diff da W3 Total Cache
Chris_O

3

Questo è relativamente semplice se il plugin è sotto il controllo del codice sorgente Git a causa della natura distribuita di Git, ma molti plugin WordPress (e tutti quelli nel repository ufficiale) sono in Subversion. Uso i rami dei fornitori e svn_load_dirs.php se ho davvero bisogno di modificare un plugin, ma questo richiede un livello di comfort ragionevolmente alto con Subversion.

Se il plugin non espone alcun repository, ti consiglio di trasformarlo in un repository Git e di applicare manualmente nuove versioni.

Alla fine, i sistemi di controllo della versione sono l'unico modo sano per applicare nuovamente le modifiche alle nuove versioni a monte.


3

Sono d'accordo con la risposta di Annika Backstrom , ma vorrei condividere la mia soluzione preferita.

Dato che la maggior parte dei plugin sono sotto svn, uso uno strumento chiamato git-svn per creare un mirror git.

Quindi, faccio solo una succursale e commetto le mie modifiche lì.

Quando il plug-in viene aggiornato a monte, estraggo dal repository svn e unisco nel mio ramo personalizzato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.