我试图通过将我自己的自定义放在一个单独的插件中来扩展插件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
那么当我用另一个插件扩展插件时,如何访问属性/方法?
答案 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()
调用似乎不对 - 只是为了调试吗?