Cara yang Benar untuk Memodifikasi Plugin

15

Apa cara terbaik untuk memodifikasi plugin? Saya sering ingin membuat perubahan kecil pada satu atau dua fungsi dalam sebuah plugin besar. Ini mudah dilakukan, tetapi saya harus menggunakan komentar untuk menandai perubahan saya dan memodifikasi plugin lagi setelah pembaruan. Idealnya saya ingin meninggalkan plugin sendirian dan melakukan perubahan di tempat lain, seperti yang kami lakukan dengan tema dan tema anak. Bisakah saya membuat plugin yang memerlukan plugin induk dan akan menimpanya?

Mike Wheaton
sumber
1
Periksa "Perluas Tanpa Memodifikasi" . Saya menganggap ini adalah solusi yang praktis lebih baik. Periksa tautan ini untuk detailnya - Cara yang Tepat untuk Mengkustomisasi Plugin WordPress
Eugine Joseph

Jawaban:

7

IMHO, pendekatan terbaik adalah dengan garpu Plugin untuk mempertahankan perubahan Anda, atau mengirimkan tambalan kepada pengembang Plugin, agar perubahan Anda membuat bagian dari Plugin asli.

Membuat "Plugin Anak" sebenarnya tidak mudah. Konsep "Tema Anak" benar-benar berlaku untuk file templat yang digunakan, lebih dari fungsi Tema (dan pada kenyataannya, functions.phpfile dari kedua Induk dan Anak dimuat, yang memang menyebabkan masalah untuk functions.phpfile kode yang tidak benar di Anak atau Induk Tema).

Chip Bennett
sumber
Jenis-jenis perubahan yang saya buat adalah khusus untuk situs dan oleh karena itu saya tidak berpikir forking atau mengirimkan tambalan akan sesuai. Saya pasti akan mengingatnya untuk perbaikan yang lebih umum untuk plugin.
Mike Wheaton
Tetapi forking pada dasarnya adalah apa yang sudah Anda lakukan . Pada dasarnya, itu adalah opsi Anda: garpu, atau tambalan. @Chris_O memberikan cara yang baik untuk dapat menarik pembaruan otomatis dari hulu, sambil mempertahankan Plugin forked Anda.
Chip Bennett
7

Cara "benar" jelas tergantung pada plugin. Beberapa plugin lebih mudah diedit daripada yang lain, tetapi sebagian besar plugin sebenarnya dapat dimodifikasi oleh plugin lain.

Misalnya, jika sebuah plugin memiliki fungsi yang terhubung ke WordPress dengan suatu tindakan, maka itu adalah hal yang sederhana bagi Anda untuk membuat plugin lain yang melepaskan kaitan fungsi itu dengan remove_action, dan kemudian menambahkan fungsi pengganti Anda sebagai gantinya. Metode semacam ini akan memungkinkan Anda mengganti fungsi individual dalam plugin dengan versi modifikasi Anda sendiri, tanpa mengubah plugin asli.

Konsep yang sama bekerja dengan filter, jelas.

Otto
sumber
4

Cara terbaik adalah dengan hanya mengkloningnya dan mengubah Nama Plugin di header dan mengubah nama direktori. Dengan cara ini Anda juga bisa menginstal yang asli tetapi tidak diaktifkan sehingga Anda akan tetap mendapatkan peringatan ketika pembaruan dirilis.

<?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
*/
?>
Chris_O
sumber
Ini masih memerlukan melalui versi baru plugin untuk menemukan perubahan (saya kira alat perbandingan versi akan membantu) dan kemudian menyalin perubahan itu ke plugin kustom saya. Saya kira saya bisa mengunduh plugin dan menggunakan SVN untuk menggabungkan perubahan dengan versi kustom saya.
Mike Wheaton
2
Ada tautan langsung ke file diff pada tautan log pengembangan di halaman plugin. Sebagai contoh di sini adalah diff yang dihasilkan dari W3 Total Cache
Chris_O
3

Ini relatif mudah jika plugin berada di bawah kendali sumber Git karena sifat didistribusikan Git, tetapi banyak plugin WordPress (dan semua yang ada di repositori resmi) berada di Subversion. Saya menggunakan cabang vendor dan svn_load_dirs.php jika saya benar - benar perlu memodifikasi plugin, tetapi ini membutuhkan tingkat kenyamanan yang cukup tinggi dengan Subversion.

Jika plugin tidak mengekspos repositori, saya sarankan untuk mengubahnya sendiri menjadi repositori Git dan secara manual menerapkan versi baru.

Pada akhirnya, sistem kontrol versi adalah satu-satunya cara yang waras untuk mengajukan kembali perubahan ke versi hulu baru.

Annika Backstrom
sumber
3

Saya setuju dengan jawaban Annika Backstrom , tetapi saya ingin membagikan solusi pilihan saya.

Karena sebagian besar plugin berada di bawah svn, saya menggunakan alat yang disebut git-svn untuk membuat cermin git.

Kemudian, saya hanya membuat cabang dan melakukan perubahan di sana.

Ketika plugin diperbarui hulu, saya hanya menarik dari repo svn dan bergabung ke cabang kustom saya.

scribu
sumber