EDIT_USER_PROFILE和SHOW_USER_PROFILE未在类内触发

时间:2018-01-26 作者:Alex Alex

我有一个干净的Wordpress安装,没有安装任何额外的插件(仅用于测试目的)。

我创建了一个测试插件,并声明了以下类:

<?php
defined( \'ABSPATH\' ) or die( \'No script kiddies please!\' );
class Test_Plugin
{
    public function __construct()
    {
        add_action(\'show_user_profile\', array($this,\'add_user_profile_inputs\'));
        add_action(\'edit_user_profile\', array($this,\'add_user_profile_inputs\'));
    }

    public function add_user_profile_inputs( $user )
    {
?>
        <h3>New input fields area</h3>
<?php
    }
}
?>
此代码的问题是挂钩不会触发。当我导航到编辑用户或您的个人资料页面时,没有任何更改。

如果我在类外编写代码,钩子将启动,编辑用户和您的配置文件页面将随着新文本的添加而更改:

<?php    
defined( \'ABSPATH\' ) or die( \'No script kiddies please!\' );
    add_action(\'show_user_profile\', \'add_user_profile_inputs\');
    add_action(\'edit_user_profile\', \'add_user_profile_inputs\');

    function add_user_profile_inputs( $user )
    {
        ?>
        <h3>New input fields area</h3>
        <?php
    }
?>
我不明白为什么,如果有人能解释一下的话。我想把一切都留在课堂上。这可能吗?如何做到这一点?这种行为是否适用于其他挂钩?

非常感谢。

1 个回复
最合适的回答,由SO网友:Peter HvD 整理而成

你在哪里叫这个班?类本身不会做任何事情,除非它被使用。

所以,在最后加上$activate = new Test_Plugin();

结束