플러그인에 연결


12

사용자가 다른 플러그인을 통해 무언가를 할 때 이상적으로 할 수있는 플러그인을 만들고 있습니다 .

해당 플러그인에 사용자 정의 후크를 추가 할 수는 있지만 플러그인을 배포하려고 할 때 제대로 작동하지 않습니다. 내 플러그인에서 다른 사람의 플러그인에 후크를 추가하는 좋은 방법이 있습니까? 다른 개발자가 작업을 수행 할 수 있도록 작성자에게 사용자 지정 후크를 포함하도록 요청하는 유일한 솔루션입니까?

예 : 누군가가 기사를 리트 윗 할 때 플러그인에서 무언가를하고 싶습니다. 인기있는 리트 윗 플러그인에 커스텀 훅이 있다면 내가 연결하고 사용할 수 있다면 좋을 것입니다. 플러그인이 포함되어 있지 않아 플러그인을 포함시킬 수는 있지만 내 사본에만 적용되며 재배포하려고하지 않습니다.

우리 모두가 함께 즐겁게 놀 수 있도록 더 나은 플러그인 개발자가 되려고 노력해야합니까?


1
좋은 질문입니다!
MikeSchinkel

"다른 개발자가 작업을 수행 할 수 있도록 제작자에게 사용자 정의 후크를 포함하도록 요청하는 유일한 솔루션입니까?" 대부분의 경우 그렇습니다. 플러그인을 간접적으로 연결할 수있는 특정 상황이 있지만 일반적으로 그렇지는 않습니다. 플러그인을 워드 프레스 코어 용으로 작성하는 것처럼 플러그인을 작성하도록하십시오. 필요할 때마다 필터 / 액션을 포함하십시오.
Viper007Bond

1
힌트 : 플러그인이 제공하는 후크를 문서화하여 다른 플러그인 작성자와 상호 작용할 수 있도록하십시오.
hakre

답변:


6

@ 라이언 엘 킨스 :

대답은 각 유스 케이스를 가져 오는 방법에 달려 있습니다. 어떤 경우에는 빠르고 더러운 것이 필요할 수도 있고, 다른 경우에는 더 중요한 유스 케이스 일 수도 있습니다. 다음은 염두에 두어야 할 사항입니다.

WordPress Core 내에서 대체 후크 찾기

어떤 것이 빠르고 더러운 경우 코어의 다른 다운 스트림 후크를 사용하여 필요한 것을 수정하거나 ob_start()/를 사용하여 업스트림 및 다운 스트림 후크를 모두 사용할 수 있습니다 ob_end_clean()( @Todd Perkins 가 " 플러그인 코드를 통한 큰 HTML 출력 처리 "참조) 코드 예제).

후크를 추적하려면 어제 게시 한 Instrument Hooks 플러그인을 확인하여 잠재적으로 사용할 수있는 후크를 찾는 데 도움이됩니다.

원하는 후크로 패치를 플러그인 개발자에게 제출

유스 케이스가 귀하 또는 커뮤니티에 더 중요한 경우 플러그인에 필요한 후크를 추가하는 것이 좋습니다. 그런 다음 유스 케이스에 실제로 적용되는지 확인한 후 플러그인 개발자에게 패치를 적용하여 패치를 적용 할 수 있도록하십시오. 이렇게하면 테스트 된 코드를 제공하여 가능한 한 쉽게 만들 수 있으며 사용 사례를 직접 통해 실제로 필요한지 확인할 수 있습니다. 나는 후크를 구현하려고 시도한 후에 만 ​​후크가 필요하지만 처음 구상했던 것과는 다른 후크를 찾기 위해 특정 후크가 얼마나 자주 필요하다고 생각하는지 알 수 없습니다.

패치 작성에 익숙하지 않은 경우 패치 플러그인에 가장 많이 적용되는 워드 프레스 코어 패치에 대한 좋은 기사와 희망하지 않는 패치에 대한 기사가 있습니다.

도움이 되었기를 바랍니다?

추신 : 나는 조금 실망스럽고 귀하의 질문에 대한 답변은 최종 사용자만을 위해 설계된 플러그인의 비율입니다. 즉, 자신만의 후크가 없습니다. 워드 프레스가 대부분의 플러그인처럼 설계되었다고 상상해보십시오. 융통성이없고 매우 틈새 솔루션입니다.

WordPress가 다른 플러그인에 의존하는 플러그인을 자동 설치하는 기능이 있다면 상황이 다를 수 있습니까? 클라이언트가 특정 방식과 사용 가능한 플러그인을 원하기 때문에 일반적으로 처음부터 필요한 많은 기능을 작성해야하지만 90 %는 나머지 10 %를 유연하게 업데이트 할 수 없습니다.

WordPress 커뮤니티를 선도하는 사람들이 StackExchange 사이트에서 좋은 답변을 얻는 것과 마찬가지로 모범 사례 (예 : 다른 개발자를위한 후크 추가)에 따라 플러그인이 보상되도록하는 방법을 식별하기를 바랍니다.


2

우리는 단지 시도해야합니까 위해 더 나은 그래서 우리는 모든 놀이 좋은 함께 할 수있는 플러그인 개발자의 수?

우선은 그렇습니다.

다른 개발자가 작업을 수행 할 수 있도록 작성자에게 사용자 지정 후크를 포함하도록 요청하는 유일한 솔루션입니까?

좋은 해결책이 될 것입니다.

다른 플러그인을 복사하고 변경 사항을 추가하면 더 번거로울 수 있습니다.


2

나는 당신이 질문에 당신의 질문에 대답하여 다소 수사적이라고 생각합니다.

분명히 당신은 구글이 안드로이드 및 인 텐트 시스템을 사용하여 권장하는 것과 유사한 시스템에 대해 이야기하고 있습니다. 애플리케이션은 다른 애플리케이션을 대신하여 수행 할 수있는 작업을 게시 할 수 있습니다. 앞으로. 개인적으로 나는 그것이 훌륭한 개발자로 향할 필요가 있다고 생각합니다. WordPress는 이미 사용하기 편리하거나 대부분의 경우 비슷한 사내 제품을 개발할 것인지 결정하기에 충분히 훌륭하기 때문에 WordPress를 사용합니다. 플러그인 리포지토리 자체는 대부분 최종 사용자 + 개발자와 동일합니다. 완벽하게 좋은 플러그인이있을 때 트위터 플러그인을 개발하는 이유는 무엇입니까?

동일한 '중복 현상을 개발하는 이유'는 귀하의 질문의 핵심입니다. 안드로이드 인 텐트 시스템은 애플리케이션이 이미 생성 된 기능을 활용하고 그 사이에 데이터를 전달할 수있게 해주 며,이 기능은 인기가 높고 자주 사용됩니다. WordPress에 이미 구현 된 유사한 시스템이 있지만 코어 코드에 존재하는 후크를 넘어서는 거의 사용되지 않으며, 이는 많이 사용됩니다.

사용자 정의 플러그인에 더 많은 후크가 있으면 커뮤니티에 도움이되지만 필요할 때 언제 어디서나 후크를 추가하는 쉬운 방법은 없습니다.

연결하려는 Twitter 플러그인과 관련하여 작성자에게 전자 메일을 보내십시오. 그가 기꺼이 추가 할 것이라고 확신합니다.

플러그인에 훅을 넣을 수있는 좋은 장소가 있다면 그렇게하고 문서화하십시오. 더 많은 사람들이 플러그인에 훅을두기 시작하거나 그렇게하려는 일반적인 추진이 있다면 결국 일어날 것입니다.

그래서 당신의 끝 질문에 대답하기 위해 :

우리 모두가 함께 즐겁게 놀 수 있도록 더 나은 플러그인 개발자가 되려고 노력해야합니까?

예.


편집 : 실제 질문과 후크를 구현하는 가장 좋은 방법에 대해 더 많이 생각했습니다. 플러그인을 실행하려고하는 특정 기능이있는 경우 실행할 액션을 추가 할 수 없습니까?


작동하지만 다른 플러그인 기능의 이름이 같은 경우 어떻게해야합니까?
Arlen Beiler

리트 윗이 무엇인지, 누가 누구를 알아야하는지 모르겠 기 때문일 것입니다. 함수 확인은 런타임 솔루션입니다. 실시간 솔루션은 문제의 함수가 호출되거나 데이터를 반환 할 때 실행되는 솔루션입니다.
Arlen Beiler

@Arlen-특정 기능이 있는지 확인하는 자체 기능을 작성했다고 가정 해보십시오. 'plugins_loaded'후에 실행되며 거기에 있으면 기능을 활성화하는 부울을 설정합니다. 변경되지 않는 코드에 크게 의존하지만 왜 작동하지 않는지 알 수 없습니까?
아무도

0

함수를 정의하십시오.

function my_footer() {
    do_action('my_footer');
}

이제이 후크에 연결할 수 있습니다 : add_action('my_footer', 'example_function', 1);# 더 많은 정보는 내 게시물을 참조하십시오 .


not => now, this own => 이것. 옳은?
Arlen Beiler

사용자 정의 후크를 추가하는 방법을 이해합니다. 문제는 다른 사람의 플러그인에서 플러그인을 직접 수정하지 않는 방식으로 연결하는 방법입니다.
Ryan Elkins

@Arlen : 내 나쁜 영어에 대한 많은 감사, 죄송합니다 @Ryan : 플러그인이없는 경우 불가능합니다. 그러나 작성자가 플러그인에서 요청할 때 함수 또는 클래스 교체를 확인할 수 있습니다. 그러나 활성 플러그인을 요청하고 WP에서 다른 플러그인으로 일찍 연결하고 그의 기능을 대체 할 수 있습니다.
bueltge
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.