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