2013-08-12 6 views
2

"freemium"플러그인이 있는데 중요한 업데이트가 있습니다. 원래 프로 버전을 구입 한 사용자는 무료 플러그인을 제거한 다음 프로 버전을 설치합니다. 지저분하지만 초보자였습니다. 이제 사용자가 무료 플러그인을 설치 한 다음 기능을 계획대로 확장 할 수있는 Pro 업그레이드를 설치할 수 있기를 바랍니다. {... __construct()} 클래스 MyFreePlugin 내 업그레이드 플러그인 클래스 확장하고 있습니다 :다른 플러그인/확장 클래스의 플러그인 기능 재정의

나의 현재 플러그인 클래스를 사용하는 클래스 MyProPlugin은 MyFreePlugin {...}

여기 내 문제의 확장합니다. 나는 플러그인의 설정 페이지와 tnyMCE 팝업 윈도우에 기능을 추가하고, 무료 버전의 액션, 필터, 기능을 완전히 오버라이드하고 싶다.

예 : 무료 플러그인

그것은 추가
add_action('admin_head',array(&$this,'my_free_admin_head_fn')); 

이/관리자 메뉴의 일부 스크립트를 큐에 넣있다. 나는 프로 플러그인의 스크립트를/제거 원래의 조치를 무시하고 대기열 싶습니다

add_action('admin_head',array(&$this,'pro_other_admin_head_fn'). 

을 또한, 특히 워드 프레스의 맥락에서, PHP는 클래스에 새로운 것, 내 확장 클래스는 변수를 어떻게 얻을 수 있습니다 부모의 가치?

이 모든 것이 가능합니까? 그렇다면 어떻게해야합니까? 예제가 있다면 더 좋을 것입니다. 필자는 PHP 매뉴얼을 파헤쳐 보았지만, 필터와 액션을 오버라이드하려고 할 때 그렇게 도움이되지는 않는다. 어떤 도움을 주셔서 감사합니다!

... 대답에 답변 Janw, 불행히도, 그것은 작동하지 않는 것 같습니다. 다음은 그 예이다 : 무료 플러그인의 __construct()에서, 나는이 있습니다

관리자의 사이드 바에 메뉴를 추가 할 수있는 함수를 호출
add_action('admin_menu', array(&$this,'add_plugin_menu')); 

. 프로가되기 전에

remove_action('admin_menu', array(&$this,'add_plugin_menu')); (nothing) 
remove_action('admin_menu', array(parent,'add_plugin_menu')); (nothing) 
remove_action('admin_menu', array(&parent,'add_plugin_menu')); (throws an error) 
remove_action('admin_menu', 'parent::add_plugin_menu'); (nothing) 

는 기본적으로 무료 플러그인이로드 등 : 플러그인의 내 "프로"버전에서, 나는 해당 작업을 제거 할 수있는 경우는 이들의 함께 발생하기 전에보고 테스트 해요 , 그래서 나는 그들을 제거/덮어 쓰기 전에 일어나는 것처럼 보인다. 게다가 부모님의 변수를 공개하지 않는 한 부모님의 변수에 도달 할 수 없습니다. 차라리 그렇게하지 않을 것입니다.

답변

0

remove_action()을 사용하면 무료 버전의 기능을 제거 할 수 있습니다. 그리고 프로 버전에서는 MyFreePlugin 파일 만 포함시킨 다음 확장 할 수 있습니다.

관련 문제