为什么类和公共方法的操作不激发__Construction()

时间:2020-10-27 作者:Jhonatan Villena

我试图理解WordPress如何与动作、类和方法一起工作。

如果有一个类;“测试类”;它有一个公共方法“method1”

该方法可以挂接到任何操作,如;add_action(\'theHook\', [\'TestClass\', \'method1\']);"E;

据我所知。如果不初始化该类,则无法访问其公共方法和对象。现在,我假设WordPress必须遵循这一点,它必须初始化我的;TestClass“;,这将导致public \\uu construct()激发。

但是,在测试之后,它不会激发\\uu construct()。。

这是为什么?。我知道修复方法是在“method1”内部进行自我初始化,但我正在试图弄清楚WordPress为什么会这样。

1 个回复
SO网友:fuxia

在这些情况下,方法是called statically. 类可能是这样的,请注意static 关键词:

class Foo 
{
    public static function bar()
    {
        echo "Hello, world!";
    }
}
然后您可以这样注册回调:

add_action( \'hookname\', [\'Foo\', \'bar\'] );
没有对象实例,因此__construct() 将被调用。这基本上只是一种;“名称空间”;程序功能。

相关推荐

更改wp-admin/plugins.php上统计的插件数量

我已成功地使用从插件页面隐藏我的插件$wp_list_table 然而,顶部的分页仍然将插件列为“所有(3)”等。我成功地改变了$wp_list_table 的数组_pagination_args = total_items.但它仍然在页面顶部呈现插件-“全部(3)”。有什么办法可以解决这个问题吗?我找到了WP_Plugins_List_Table::prepare_items()具有全局$totals 变量,但我不确定我将如何改变这一点,在这个函数中$totals = array(); fore