Modo Corretto per Modificare un Plugin

14 lug 2011, 15:31:07
Visualizzazioni: 46.7K
Voti: 23

Qual è il modo migliore per modificare un plugin? Spesso ho bisogno di apportare piccole modifiche a una o due funzioni all'interno di un plugin complesso. Questo è facilmente fattibile, ma devo utilizzare commenti per contrassegnare le mie modifiche e modificare nuovamente il plugin dopo un aggiornamento. Idealmente, vorrei lasciare il plugin originale intatto e fare le mie modifiche altrove, proprio come facciamo con i temi e i temi child. Posso creare un plugin che richieda il plugin principale e lo sovrascriva?

1
Commenti

Controlla su "Estendi senza Modificare". Considero che questa sia la soluzione praticamente migliore. Controlla questo link per i dettagli - Il Modo Giusto per Personalizzare un Plugin WordPress

Eugine Joseph Eugine Joseph
17 set 2015 09:34:38
Tutte le risposte alla domanda 6
1
11

Il modo "giusto" ovviamente dipende 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 tramite un'azione, allora è semplice creare un altro plugin che rimuova quella funzione con remove_action, per poi aggiungere la propria funzione sostitutiva. Questo tipo di metodo ti permette di sostituire singole funzioni nei plugin con le tue versioni modificate, senza modificare il plugin originale.

Lo stesso concetto funziona ovviamente anche con i filtri.

19 lug 2011 10:33:35
Commenti

"Buono" quanto la risposta accettata. Insieme sono un successo

mayersdesign mayersdesign
28 apr 2022 23:07:21
2

IMHO, il miglior approccio è fare un fork del Plugin per mantenere le tue modifiche, oppure inviare le patch allo sviluppatore del Plugin, per includere le tue modifiche nel Plugin originale.

Creare un "Plugin figlio" non è affatto semplice. Il concetto di "Tema figlio" si applica principalmente ai file template che vengono utilizzati, più che alle funzioni del Tema (e infatti, il file functions.php sia del Genitore che del Figlio vengono caricati, il che causa problemi per i file functions.php scritti male sia nel Tema Figlio che in quello Genitore).

14 lug 2011 15:40:28
Commenti

I tipi di modifiche che sto apportando sono specifici per il sito e quindi non credo che il forking o l'invio di patch sarebbe appropriato. Terrò sicuramente a mente queste opzioni per miglioramenti più generali ai plugin.

Mike Wheaton Mike Wheaton
14 lug 2011 15:57:10

Ma il forking è sostanzialmente quello che stai già facendo. In pratica, queste sono le tue opzioni: fork o patch. @Chris_O suggerisce un buon modo per poter ricevere aggiornamenti automatici dall'upstream, mantenendo il tuo Plugin forkato.

Chip Bennett Chip Bennett
14 lug 2011 16:08:23
2

Il modo migliore sarebbe semplicemente clonarlo e modificare il Plugin Name nell'intestazione, oltre a cambiare il nome della directory. In questo modo potresti anche avere l'originale installato ma non attivato, così continuerai a ricevere avvisi quando vengono rilasciati aggiornamenti.

<?php
/*
Plugin Name: Nome Del Plugin
Plugin URI: http://URI_Della_Pagina_Che_Descrive_Il_Plugin_e_Gli_Aggiornamenti
Description: Una breve descrizione del Plugin.
Version: Numero di versione del Plugin, es: 1.0
Author: Nome Dell'Autore Del Plugin
Author URI: http://URI_Dell'Autore_Del_Plugin
License: Un "slug" per la licenza, es. GPL2
*/
?>
14 lug 2011 15:36:48
Commenti

Questo richiede ancora di esaminare le nuove versioni del plugin per trovare le modifiche (suppongo che uno strumento di confronto tra versioni potrebbe aiutare) e poi copiare tali modifiche nel mio plugin personalizzato.

Suppongo che potrei scaricare il plugin e usare SVN per unire le modifiche con la mia versione personalizzata.

Mike Wheaton Mike Wheaton
14 lug 2011 15:42:19

C'è un collegamento diretto al file diff nel link del registro di sviluppo nella pagina dei plugin. Ad esempio, ecco un diff generato da W3 Total Cache

Chris_O Chris_O
14 lug 2011 15:49:13
0

Questo è relativamente semplice se il plugin è sotto controllo del codice sorgente Git grazie alla natura distribuita di Git, ma molti plugin WordPress (e tutti quelli nel repository ufficiale) sono in Subversion. Io uso vendor branches e svn_load_dirs.php se ho davvero bisogno di modificare un plugin, ma questo richiede un livello di confidenza abbastanza alto con Subversion.

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

Alla fine, i sistemi di controllo versione sono l'unico modo sensato per riapplicare le modifiche alle nuove versioni upstream.

17 lug 2011 15:23:02
0

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

Dato che la maggior parte dei plugin sono su svn, utilizzo uno strumento chiamato git-svn per creare uno specchio git.

Poi, creo semplicemente un branch e inserisco le mie modifiche lì.

Quando il plugin viene aggiornato upstream, eseguo il pull dal repository svn e unisco nel mio branch personalizzato.

19 lug 2011 18:43:50
2

Dato che non è stato menzionato, puoi sostituire qualsiasi funzione che è stata resa "pluggable". Le funzioni pluggable hanno questo aspetto:

if (! function_exists('nome_funzione')) {
    function nome_funzione() {
         //...
    }
}

A quel punto puoi semplicemente ridefinire la funzione da te stesso (in functions.php, con Code Snippets, o nel tuo plugin personalizzato).

Sfortunatamente, la maggior parte dei plugin non rende le proprie funzioni pluggable; o al massimo, solo alcune delle loro funzioni sono pluggable.

28 apr 2022 18:19:51
Commenti

Vuoi dire che puoi sovrascrivere una specifica funzione nel plugin con una funzione personalizzata, e continuare a ricevere aggiornamenti per il plugin?

johny why johny why
30 lug 2024 23:27:37

@johnywhy Esatto. Intendo, a patto che non sovrascrivano il tuo codice decidendo nell'aggiornamento di non renderlo più "pluggable".

CubicInfinity CubicInfinity
1 ago 2024 18:08:21