플러그인 용 API를 만드는 방법은 무엇입니까?


20

나는 WordPress 용 플러그인을 개발 해 왔으며 개발 한 대부분의 플러그인은 2 ~ 3 개의 클래스를 사용하므로 Buddypress 또는 WooCommerce만큼 크지 않습니다.

다른 개발자가 기능을 사용자 정의 할 수있는 시스템과 Buddypress 및 WooCommerce와 동일 해야하는 복잡한 시스템을 제공하기 위해 두 개의 오픈 소스 플러그인을 개발할 계획입니다 (현재 세부 사항을 공유 할 수는 없지만 나중에 개발하는 동안) .

플러그인 파일을 확인하고 개발자가 필요에 따라 수정할 수있는 자체 작업 및 필터를 등록했음을 알 수 있습니다. 그러나 내 문제는 다른 사람들이 기능을 재정의하고 자신의 기능을 추가 할 수있는 유연성을 갖는 플러그인을 작성하는 방법을 완전히 이해하지 못하는 것입니다.

나는 명확한 대답을하기가 어렵다는 것을 알고 있지만 올바른 방향으로 갈 수 있도록 일종의 시작 안내서가 필요합니다. 자신의 액션과 필터를 등록해야합니까? 그렇다면 어떻게합니까? 그렇지 않은 경우 내 옵션은 무엇입니까?

당신의 조언은 저에게 많은 도움이 될 것입니다 ... 감사합니다

답변:


25

플러그인 또는 테마에서 제공하는 API는 해당 특정 코드의 논리에 따라 다릅니다. 모든 상황에 적용되는 안내서가 없을 수 있습니다.

나는 API를 사용하여 여러 플러그인을 제공하는 사람이며 지금까지 배운 것은 다음과 같습니다.

  1. 사람들이 코드를 어떻게 사용하는지 알 때까지 API를 제공하지 마십시오.

    API없이 처음 두세 가지 버전을 출시하십시오. 가능한 경우 사용자 정의 조치 또는 필터, 공용 메소드 또는 함수 (전역 변수 없음)가 없습니다. 사용자의 요청을 기다리십시오. 그러나 내부 코드 구조가 장기적으로 작동 할 때까지 코드를 추가하지 마십시오.

    API의 이전 버전과의 호환성을 유지하는 것은 어렵습니다 . 다른 장소에서 필요한 개선을 방해 할 수 있습니다. 현재 WordPress에서 제거 할 수없는 모든 전역 변수에 대해 생각해보십시오. 그것은 나쁜 API이며 사람들 이 이미 사용 하기 때문에 수년 동안 API에 갇혀 있습니다 .

  2. 나머지 코드에서 API를 분리 해보십시오 (아이디어는 이전 링크 참조).
    귀하의 API는 타사 개발자뿐만 아니라 귀하에게도 유용해야합니다. 필요하지 않은 경우 스스로 제한을 추가하지 마십시오.

  3. 자신의 개밥을 먹는다.
    사용자 정의 후크를 제공하는 경우 코드에서 사용하십시오. 이것은 다른 개발자들에게 유용한 예제를 제공 할 것이며 가능한 빨리 결함을 볼 수 있습니다.
    워드 프레스 코어가 소위 Settings API를 내부적으로 사용한다면 오늘날 우리는 이러한 혼란을 느끼지 못할 것입니다. 아마도.

  4. 예를 들면.
    플러그인에서 WordPress 핵심 API의 좋은 부분을 사용하십시오. 익명 객체 , 상수, 전역 변수 및 모든 종류의 예측할 수없는 코드 는 피하십시오 .

  5. 당신이 일관된 명명 규칙을 사용하고 있는지 확인 (안 그런 엉망 아님)를 사용하고 모든 것을 고유 한 네임 스페이스 아래에 두십시오.

  6. 먼저 설명서를 작성하십시오. 나중에 새 API의 일부를 릴리스하십시오.
    모든 것에 대한 유용한 예를 만드십시오. 당신은 얼마나 많은 구멍과 중복을 찾을 수 있는지 놀랄 것입니다.

  7. 콜백 지옥을 피하십시오.
    제대로 작동하지 않을 때 API를 디버깅 할 수있는 특정 도구를 제공합니다 (축소되지 않은 스크립트 및 스타일 시트 포함). AJAX 디버깅 방법에 대한 예제를 작성했습니다 . 여기서 얼마나 창의적인지 설명 할 수 있습니다. 다시 말하지만 이러한 도구는 릴리스하기 전에 설명서에 설명되어 있어야합니다.

  8. WordPress의 콜백 패러 다마에 대한 대안은 관찰자 패턴 일 수 있습니다 . 이로 인해 타사 개발자의 장벽이 높아지지만 양쪽에서 더 나은 코드를 얻을 수 있습니다.


당신은 나에게 엄청난 가이드를 주었다. 올바른 방향으로 시작하는 데 도움이됩니다. 내가 생각하지 않은 몇 가지 사항. 그 점에 감사드립니다. 개발을 시작하면 플러그인에 대한 새로운 질문을 시작할 것입니다. 정말 전문가의 도움이 필요합니다. 현재 시스템의 구조적 흐름도를 만들고 있습니다. 다시 한 번 감사드립니다. 답변을 선택하고 있지만 다른 전문가의 의견도 듣고 싶습니다.
pixelngrain
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.