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


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.