source

WordPress - 플러그인에서 함수 재정의

factcode 2023. 2. 9. 22:50
반응형

WordPress - 플러그인에서 함수 재정의

WordPress 사용자가 작성한 플러그인을 수정하기 위한 베스트 프랙티스는 무엇일까?

를 들어 Contact Form 7 플러그인에는 몇 줄의 코드를 변경할 수 있습니다.이 함수는 함수 wpcf7_ajax_json_echo()라고 불리며 다음 위치에 있습니다.

wp-content > plugins > contact-form-7 > includes > controller.php

물론 그 파일에서 코드를 바로 변경하여 작업을 완료할 수 있지만, 그 플러그 인을 업데이트하고 싶을 때는 수정한 내용이 덮어쓰기 될 수 있기 때문에 더 이상 사용할 수 없습니다.

제 기능을 통해 실현해야 한다는 것을 알고 있습니다.php 파일입니다만, 어떻게 해야 할지 모르겠습니다.또, 그 특정의 함수는 100 행 이상의 코드이며, 향후 플러그 인의 작성자가 그 함수의 갱신을 선택할 가능성이 높기 때문에, 그 함수 전체를 덮어쓰고 싶지 않다고 생각합니다.

그 함수의 몇 줄을 제 함수로 수정할 수 있는 가장 깨끗한 방법을 아는 사람 있나요?php 파일?

감사해요!

코어 교체는 권장하지 않습니다.하지만, 당신은 약간 곤경에 처해 있어요.

다음과 같은 작업을 수행할 수 있습니다.

  • 플러그인에서 직접 함수 코드 업데이트
  • 플러그인에서 현재 함수 코드를 복사하여 함수에서 재정의합니다.php

결국 미래의 호환성이라는 동일한 문제에 직면하게 됩니다.

다음 중 하나:

  • 업데이트는 플러그인 변경 사항을 덮어씁니다.
  • 함수가 플러그인 변경 사항을 덮어씁니다.

그래서 말하고 싶지 않지만 직접 플러그인 업데이트를 하겠습니다.적어도 업그레이드 시 변경 사항이 누락되었음을 금방 알 수 있습니다.또한 플러그인 업데이트에 변경 내용이 포함될 수 있습니다.

독자적인 변경을 유지하면서 순방향 호환성을 유지하고 싶은 경우(호스트의 SVN을 사용할 수 있는 경우), SVN을 사용할 수 있습니다.

플러그인 디렉터리에 있는 각 플러그인은 SVN repo를 가져야 합니다(이렇게 하면 디렉터리는 업데이트가 있는지 알 수 있습니다).CF7 레포입니다.

/custom-contact-form-7/과 같은 폴더 내의 /plugins/ 디렉토리로 트렁크를 체크합니다.wp-contact-form-7.php 파일을 변경하여 원하는 이름을 지정하고 원하는 이름을 변경하여 커스터마이즈합니다.

새로운 업데이트를 받으려면svn up그리고 그것들은 당신의 변경사항과 합쳐질 것입니다.다만, Marge 경합을 해소할 필요가 있는 경우가 있습니다.

Subversion을 사용한 Version Control은 필요한 경우 모든 사람이 SVN을 배우기 시작하는 입니다.지금 Github repo도 있어요. 만약 당신이 그것을 갈고 싶다면요.

업데이트 내용을 함수에 추가해야 한다고 생각합니다.php 또는 커스텀플러그인에 접속합니다.지금은 번거롭지만 플러그인을 업그레이드할 때마다 번거로움이 훨씬 줄어듭니다.

어떤 경우에도 업데이트에서 변경된 내용을 항상 참조해야 합니다.이 파일을 복사하지 않고 기능을 확장할 수 있더라도 최소한 변경 사항이 계속 작동하는지 확인해야 합니다.WinDiff/BBEdit의 비교를 통해 빠르게 해결할 수 있습니다.

그래서 첫 번째 제안은 그 기능을 무효로 하는 것입니다.

두 번째 제안:이 플러그인에 확장자(a, b, c)가 몇 가지 있다는 것을 알게 되었습니다.아마 어떻게 확장자를 만들었는지도 알 수 있고, 그 세부사항을 사용하여 직접 만들 수도 있습니다.음, 그건 수도꼭지를 고치기 위해 새 집을 짓자는 것과 같지만, 그건 아이디어야.

언급URL : https://stackoverflow.com/questions/7503384/wordpress-overriding-a-function-in-a-plugin

반응형