Cách thích hợp để sửa đổi Plugin


15

Cách tốt nhất để sửa đổi một plugin là gì? Tôi thường muốn thực hiện các thay đổi nhỏ đối với một hoặc hai chức năng trong một plugin lớn. Điều này được thực hiện dễ dàng, nhưng tôi phải sử dụng các bình luận để đánh dấu các thay đổi của mình và sửa đổi lại plugin sau khi cập nhật. Lý tưởng nhất là tôi muốn để plugin một mình và thực hiện các thay đổi của mình ở nơi khác, giống như chúng ta làm với các chủ đề và chủ đề con. Tôi có thể tạo một plugin yêu cầu plugin cha và sẽ ghi đè lên nó không?


1
Kiểm tra "Mở rộng mà không sửa đổi" . Tôi coi đây là giải pháp thực tế tốt hơn. Kiểm tra liên kết này để biết chi tiết - Cách phù hợp để tùy chỉnh plugin WordPress
Eugine Joseph

Câu trả lời:


7

IMHO, cách tiếp cận tốt nhất là phân nhánh Plugin để duy trì các thay đổi của bạn hoặc bằng cách khác gửi các bản vá cho nhà phát triển Plugin, để các thay đổi của bạn tạo thành một phần của Plugin gốc.

Tạo một "Plugin trẻ em" thực sự không dễ dàng. Các "Child Theme" khái niệm thực sự áp dụng cho mẫu file mà quen, nhiều hơn so với các chức năng Theme (và trên thực tế, các functions.phptập tin từ cả hai mẹ và trẻ em có được nạp, mà không gây ra vấn đề cho đúng cách mã hóa functions.phptập tin trong một trong hai con hoặc cha mẹ Chủ đề).


Các loại thay đổi tôi đang thực hiện là dành riêng cho trang web và vì vậy tôi không nghĩ việc thay đổi hoặc gửi các bản vá sẽ phù hợp. Tôi chắc chắn sẽ ghi nhớ những cải tiến chung hơn cho các plugin.
Mike Wheaton

Nhưng forking về cơ bản là những gì bạn đã làm . Về cơ bản, đó là những lựa chọn của bạn: ngã ba hoặc miếng vá. @Chris_O cung cấp một cách tốt để có thể cập nhật tự động từ thượng nguồn, trong khi duy trì Plugin rẽ nhánh của bạn.
Chip Bennett

7

Cách "đúng" rõ ràng phụ thuộc vào plugin. Một số plugin dễ chỉnh sửa hơn các plugin khác, nhưng hầu hết các plugin thực sự có thể được sửa đổi bởi các plugin khác.

Ví dụ: nếu một plugin có chức năng được nối vào WordPress bằng một hành động, thì việc bạn tạo một plugin khác không thực hiện chức năng đó bằng remove_action là một vấn đề đơn giản. Loại phương pháp này sẽ cho phép bạn thay thế các chức năng riêng lẻ trong plugin bằng các phiên bản sửa đổi của riêng bạn mà không sửa đổi plugin ban đầu.

Khái niệm tương tự làm việc với các bộ lọc, rõ ràng.


4

Cách tốt nhất là chỉ sao chép nó và thay đổi Tên Plugin trong tiêu đề và thay đổi tên thư mục. Bằng cách này, bạn cũng có thể cài đặt bản gốc nhưng không được kích hoạt để bạn vẫn nhận được thông báo khi bản cập nhật được phát hành.

<?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
*/
?>

Điều này vẫn đòi hỏi phải trải qua các phiên bản mới của plugin để tìm các thay đổi (tôi cho rằng một công cụ so sánh phiên bản sẽ có ích) và sau đó sao chép những thay đổi đó sang plugin tùy chỉnh của tôi. Tôi cho rằng tôi có thể tải xuống plugin và sử dụng SVN để hợp nhất các thay đổi với phiên bản tùy chỉnh của mình.
Mike Wheaton

2
Có một liên kết trực tiếp đến tệp diff trên liên kết nhật ký phát triển trên trang plugin. Ví dụ ở đây là diff được tạo từ W3 Total Cache
Chris_O

3

Điều này tương đối dễ dàng nếu plugin nằm dưới sự kiểm soát nguồn Git do tính chất phân tán của Git, nhưng nhiều plugin WordPress (và tất cả các plugin trong kho chính thức) đều ở Subversion. Tôi sử dụng các nhánh nhà cung cấp và svn_load_dirs.php nếu tôi thực sự cần sửa đổi một plugin, nhưng điều này đòi hỏi mức độ thoải mái khá cao với Subversion.

Nếu plugin không có kho lưu trữ, tôi khuyên bạn nên tự biến nó thành kho lưu trữ Git và tự áp dụng các phiên bản mới.

Cuối cùng, các hệ thống kiểm soát phiên bản là cách duy nhất lành mạnh để áp dụng lại các thay đổi cho các phiên bản ngược dòng mới.


3

Tôi đồng ý với câu trả lời của Annika Backstrom , nhưng tôi muốn chia sẻ giải pháp ưa thích của mình.

Vì hầu hết các plugin đều nằm dưới svn, tôi sử dụng một công cụ có tên git-svn để tạo một gương git.

Sau đó, tôi chỉ cần làm một chi nhánh và cam kết thay đổi của tôi ở đó.

Khi plugin được cập nhật ngược dòng, tôi chỉ cần kéo từ repo svn và hợp nhất vào nhánh tùy chỉnh của mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.