2016-08-22 5 views
0

Я пытаюсь расширить плагин Cleverness to do list, поставив свои собственные настройки в отдельный плагин, однако я не могу получить доступ к каким-либо методам/свойствам из сообразительности -todo-list плагин.расширение плагина wordpress - доступ к переменным/методам из другого плагина

В исходном плагине есть функция display(), которую я хочу настроить. Я также хочу показать «завершенные» объекты todo, которые, если бы я просто взломал оригинальный плагин, все, что мне нужно сделать, это добавить эти две строки кода в функцию отображения в списке умных дел -frontend.class.php:

$this->list .= '<h1>Completed Todos</h1>'; 
$this->loop_through_todos(1, $category); 

Но я не уверен, как получить доступ к $ это, $ this-> список, или $ this-> loop_through_todos() внутри моего собственного пользовательского плагина, не прикасаясь к оригиналу плагин.

Я попытался просто включить файлы, откуда берутся эти методы/свойства, а затем вызвать функцию, как обычно, но она не работает, и я не уверен, что делать.

function clever_travel_list() 
{ 
    if (! is_admin()) { 
     //lines 710/711 of cleverness-to-do-list-frontend.class.php 
     include_once ABSPATH . 'wp-content/plugins/cleverness-to-do-list/includes/cleverness-to-do-list.class.php'; 
     include_once ABSPATH . 'wp-content/plugins/cleverness-to-do-list/includes/cleverness-to-do-list-frontend.class.php'; 
     $this->list .= '<h1>Completed Todos</h1>'; 
     $this->loop_through_todos(1, $category); 
     die(ClevernessToDoList::$list); 
    } 

} 
add_action('ctdl_list_items', clever_travel_list); 

с $ это я получаю следующее сообщение об ошибке:

Fatal error: Using $this when not in object context in /Applications/AMPPS/www/wpplugin/wp-content/plugins/clever-extension/clever-extension.php on line 11 

Так как я доступ к свойствам/методам, когда я простирающийся плагин с другим плагином?

ответ

1

Если у вас включен плагин «Умение делать список», вам не нужно будет include s. В то время как они загружают код, они не создают или не инициализируют связанные объекты (поэтому было бы проще включить плагин, если это возможно).

Глядя на коде, cleverness-to-do-list-frontend.class.php хранится в глобальной переменной $CTDL_Frontend_Admin после его инициированного, так что-то, как это должно работать:

function clever_travel_list() 
{ 
    if (! is_admin()) { 
     global $CTDL_Frontend_Admin; 
     $CTDL_Frontend_Admin->list .= '<h1>Completed Todos</h1>'; 
     $CTDL_Frontend_Admin->loop_through_todos(1, $category); 
     die(ClevernessToDoList::$list); 
    } 
} 

Хотя с помощью die() вызова кажется неправильным - это было только для отладки?

Смежные вопросы