扩展wordpress插件 - 从其他插件访问变量/方法

时间:2016-08-22 23:52:20

标签: php wordpress plugins

我试图通过将我自己的自定义放在一个单独的插件中来扩展插件Cleverness to do list,但是,我无法从cleverness-todo-list插件访问任何方法/属性。

我想要自定义原始插件中的display()函数。我想要显示“已完成”的待办事项,如果我只是为了破解原始插件,我需要做的就是在显示功能中添加这两行代码,以便在聪明的待办事项列表中添加-frontend.class.php:

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

但我不知道如何从我自己的自定义插件中访问$ this,$ this-&gt; list或$ this-&gt; 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);

使用$ this我收到以下错误:

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 个答案:

答案 0 :(得分:1)

如果你有&#34;聪明待办事项清单&#34;插件已激活,您不应该需要include。当他们加载代码时,他们不会创建或初始化相关对象(这就是为什么在可能的情况下更容易激活插件的原因。)

查看代码,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()调用似乎不对 - 只是为了调试吗?