Modalitatea corectă de a modifica un plugin

14 iul. 2011, 15:31:07
Vizualizări: 46.7K
Voturi: 23

Care este cea mai bună modalitate de a modifica un plugin? Frecvent doresc să fac modificări mici la una sau două funcții dintr-un plugin mai mare. Acest lucru se poate face ușor, dar trebuie să folosesc comentarii pentru a marca modificările și să modific pluginul din nou după o actualizare. În mod ideal, aș dori să las pluginul neatins și să fac modificările în altă parte, similar cu ceea ce facem cu temele și temele copil. Pot să creez un plugin care să necesite pluginul părinte și să îl suprascrie?

1
Comentarii

Verifică opțiunea "Extindere fără modificare". Consider că aceasta este soluția practică mai bună. Verifică acest link pentru detalii - Modul Corect de a Personaliza un Plugin WordPress

Eugine Joseph Eugine Joseph
17 sept. 2015 09:34:38
Toate răspunsurile la întrebare 6
1
11

Modul "corect" depinde evident de plugin. Unele plugin-uri sunt mai ușor de editat decât altele, dar majoritatea plugin-urilor pot fi de fmodificate prin alte plugin-uri.

De exemplu, dacă un plugin are o funcție conectată la WordPress printr-o acțiune, atunci este simplu să creezi un alt plugin care să dezactiveze acea funcție cu remove_action, și apoi să adaugi funcția ta înlocuitoare. Această metodă îți permite să înlocuiești funcții individuale din plugin-uri cu versiunile tale modificate, fără a modifica plugin-ul original.

Același concept funcționează evident și cu filtrele.

19 iul. 2011 10:33:35
Comentarii

"La fel de bun" ca răspunsul acceptat. Combinate, ele sunt un câștigător

mayersdesign mayersdesign
28 apr. 2022 23:07:21
2

DPMDV, cea mai bună abordare este fie să fork-uiți Plugin-ul pentru a vă menține modificările, fie să trimiteți patch-uri către dezvoltatorul Plugin-ului, pentru a avea modificările dvs. incluse în Plugin-ul original.

Crearea unui „Plugin Copil” nu este deloc ușoară. Conceptul de „Temă Copil” se aplică mai degrabă fișierelor de șabloane care sunt utilizate, mai mult decât funcțiilor Temelor (și, de fapt, fișierul functions.php din ambele, Părinte și Copil, sunt încărcate, ceea ce poate cauza probleme pentru fișierele functions.php care nu sunt codate corect în Tema Copil sau Părinte).

14 iul. 2011 15:40:28
Comentarii

Tipurile de modificări pe care le fac sunt specifice site-ului și nu cred că bifurcarea sau trimiterea de patch-uri ar fi potrivite. Cu siguranță le voi ține minte pentru îmbunătățiri mai generale ale plugin-urilor.

Mike Wheaton Mike Wheaton
14 iul. 2011 15:57:10

Dar bifurcarea este practic ceea ce deja faci. Practic, acestea sunt opțiunile tale: bifurcare sau patch. @Chris_O oferă o modalitate bună de a putea integra actualizări automate din sursa principală, menținând în același timp plugin-ul tău bifurcat.

Chip Bennett Chip Bennett
14 iul. 2011 16:08:23
2

Cea mai bună metodă ar fi să îl clonezi și să schimbi Numele Pluginului în header și să modifici numele directorului. În acest fel, poți păstra și versiunea originală instalată, dar neactivată, astfel încât să primești în continuare alerte atunci când sunt lansate actualizări.

<?php
/*
Plugin Name: Numele Pluginului
Plugin URI: http://URI_Pagina_Descriere_Plugin_Actualizari
Description: O scurtă descriere a Pluginului.
Version: Numărul versiunii Pluginului, de exemplu: 1.0
Author: Numele Autorului Pluginului
Author URI: http://URI_Autor_Plugin
License: Un "Slug" pentru licență, de exemplu GPL2
*/
?>
14 iul. 2011 15:36:48
Comentarii

Aceasta încă necesită parcurgerea noilor versiuni ale pluginului pentru a găsi modificările (presupun că un instrument de comparare a versiunilor ar ajuta) și apoi copierea acestor modificări în pluginul meu personalizat.

Presupun că aș putea descărca pluginul și folosi SVN pentru a îmbina modificările cu versiunea mea personalizată.

Mike Wheaton Mike Wheaton
14 iul. 2011 15:42:19

Există o legătură directă către fișierul diff în jurnalul de dezvoltare de pe pagina pluginurilor. De exemplu, aici este diff generat din W3 Total Cache

Chris_O Chris_O
14 iul. 2011 15:49:13
0

Acest lucru este relativ ușor dacă plugin-ul este sub controlul sursei Git datorită naturii distribuite a Git, dar multe plugin-uri WordPress (și toate cele din depozitul oficial) sunt în Subversion. Eu folosesc ramuri de furnizor și svn_load_dirs.php dacă chiar trebuie să modific un plugin, dar acest lucru necesită un nivel destul de ridicat de confort cu Subversion.

Dacă plugin-ul nu expune niciun depozit, aș recomanda să-l transformi singur într-un depozit Git și să aplici manual versiunile noi.

În final, sistemele de control al versiunilor sunt singura modalitate rezonabilă de a reaplica modificări la versiunile noi din upstream.

17 iul. 2011 15:23:02
0

Sunt de acord cu răspunsul lui Annika Backstrom, dar aș dori să îmi împărtășesc soluția preferată.

Deoarece majoritatea plugin-urilor sunt în svn, folosesc o unealtă numită git-svn pentru a crea o oglindă git.

Apoi, pur și simplu creez o ramură și îmi comit modificările acolo.

Când plugin-ul este actualizat upstream, pur și simplu trag din repository-ul svn și fac merge în ramura mea personalizată.

19 iul. 2011 18:43:50
2

Deoarece nu a fost menționat, poți înlocui orice funcție care a fost făcută pluggable. Funcțiile pluggable arată astfel:

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

Apoi poți pur și simplu să redefinesti funcția singur (în functions.php, Code Snippets sau în propriul tău plugin).

Din păcate, majoritatea plugin-urilor nu își fac funcțiile pluggable; sau, în cel mai bun caz, doar unele dintre funcțiile lor sunt pluggable.

28 apr. 2022 18:19:51
Comentarii

Vrei să spui că poți înlocui o anumită funcție din plugin cu una personalizată și tot să primești actualizări pentru plugin?

johny why johny why
30 iul. 2024 23:27:37

@johnywhy Asta ar fi corect. Adică, presupunând că nu îți suprascriu codul tău decidând în actualizare să nu o mai facă pluggable.

CubicInfinity CubicInfinity
1 aug. 2024 18:08:21