플러그인을 수정하는 올바른 방법


15

플러그인을 수정하는 가장 좋은 방법은 무엇입니까? 큰 플러그인 내에서 한두 가지 기능을 약간 변경하고 싶을 때가 많습니다. 이 작업은 쉽게 수행되지만 주석을 사용하여 변경 사항을 표시하고 업데이트 후 플러그인을 다시 수정해야합니다. 이상적으로는 테마와 자식 테마와 마찬가지로 플러그인을 그대로두고 다른 곳에서 변경하고 싶습니다. 부모 플러그인이 필요한 플러그인을 만들 수 있습니까?


1
"수정하지 않고 확장"을 확인하십시오 . 나는 이것이 실질적으로 더 나은 해결책이라고 생각합니다. 자세한 내용은이 링크를 확인하십시오
— -WordPress

답변:


7

IMHO의 가장 좋은 방법은 변경 사항을 유지하기 위해 플러그인을 포크하거나 플러그인 개발자에게 패치를 제출하여 변경 사항을 원래 플러그인의 일부로 만드는 것입니다.

"자식 플러그인"을 만드는 것은 쉽지 않습니다. "자식 테마"개념 은 테마 기능 (및 실제로 는 부모와 자식 모두 의 파일이로드 되어 자식 또는 부모에서 부적절하게 코딩 된 파일에 문제 가 발생 함) 외에도 사용되는 템플리트 파일에 적용됩니다. 테마).functions.phpfunctions.php


변경하는 유형은 사이트마다 다르므로 패치를 제출하거나 제출하는 것이 적절하지 않다고 생각합니다. 플러그인에 대한 일반적인 개선 사항을 명심하십시오.
— Mike Wheaton

그러나 포크는 기본적으로 이미하고있는 일 입니다. 기본적으로 포크 또는 패치 옵션이 있습니다. @Chris_O는 분기 플러그인을 유지하면서 업스트림에서 자동 업데이트를 가져올 수있는 좋은 방법을 제공합니다.
— 칩 베넷

7

"올바른"방법은 분명히 플러그인에 달려 있습니다. 일부 플러그인은 다른 플러그인보다 편집하기가 쉽지만 대부분의 플러그인은 실제로 다른 플러그인으로 수정할 수 있습니다.

예를 들어, 플러그인에 액션을 사용하여 WordPress에 연결된 함수가있는 경우 remove_action을 사용하여 해당 함수의 후크를 해제 한 다음 다른 대체 함수를 추가하는 다른 플러그인을 만드는 것이 간단합니다. 이런 종류의 방법을 사용하면 원래 플러그인을 수정하지 않고도 플러그인의 개별 기능을 사용자가 수정 한 버전으로 바꿀 수 있습니다.

동일한 개념은 필터와 함께 작동합니다.


4

가장 좋은 방법은 그것을 복제하고 헤더에서 플러그인 이름을 변경하고 디렉토리 이름을 변경하는 것입니다. 이렇게하면 원본을 설치했지만 활성화 할 수 없으므로 업데이트가 릴리스 될 때 경고 메시지가 계속 표시됩니다.

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

그래도 새로운 버전의 플러그인을 통해 변경 사항을 찾은 다음 (버전 비교 도구가 도움이 될 것이라고 생각합니다) 변경 사항을 사용자 정의 플러그인으로 복사해야합니다. 플러그인을 다운로드하고 SVN을 사용하여 변경 사항을 사용자 정의 버전과 병합 할 수 있다고 가정합니다.
— Mike Wheaton

2
플러그인 페이지의 개발 로그 링크에 diff 파일에 대한 직접 링크가 있습니다. 예를 들어 여기가 DIFF에서 생성됩니다 W3 총 캐시
— Chris_O

3

플러그인이 Git의 분산 특성으로 인해 Git 소스 제어하에있는 경우 비교적 쉽지만 많은 WordPress 플러그인 (및 공식 저장소의 모든 플러그인)이 Subversion에 있습니다. 플러그인을 실제로 수정해야하는 경우 벤더 브랜치 와 svn_load_dirs.php를 사용 하지만, Subversion과의 호환성 수준이 상당히 높아야합니다.

플러그인에 저장소가 없으면 Git 저장소로 직접 전환하고 새 버전을 수동으로 적용하는 것이 좋습니다.

결국, 버전 제어 시스템은 새로운 업스트림 버전에 변경 사항을 다시 적용 할 수있는 유일한 방법입니다.


3

Annika Backstrom의 답변에 동의 하지만 선호하는 솔루션을 공유하고 싶습니다.

대부분의 플러그인은 svn에 있으므로 git-svn이라는 도구를 사용하여 git mirror를 만듭니다.

그런 다음 지점을 만들고 변경 사항을 커밋합니다.

플러그인이 업스트림으로 업데이트되면 svn 저장소에서 가져 와서 내 사용자 지정 분기로 병합합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.