插件激活后无法显示消息

时间:2017-01-12 作者:realtebo

依据:https://codex.wordpress.org/Plugin_API/Action_Reference/admin_notices

我的实际代码

class Activation {

  function __construct() {

    add_action( 
      \'admin_notices\', 
      array($this,"text_admin_notices")
    );

    Utils::update_option("is_activated", true);
  }

  function text_admin_notices () {
    ?>
        <div class="notice notice-success is-dismissible">
            <p> TEST MESSAGE</p>
        </div
    <?php
  }

}
我知道__construct() 正在执行,因为Utils::update_option (一个简单的包装器)正在工作,它正在选项表中创建选项。

所以我希望add_action 应该向激活我的插件的管理员用户显示一条消息。

实际上,插件已激活,但没有显示任何消息。

我使用的是Wordpress 4.7.1(全新、干净、没有其他东西,今天的安装)

我的代码有什么问题?

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

<?php
/*
  Plugin Name: Activation
  Description: This display notice message test plugin
  Author: Nanhe Kumar
  Version: 1.0
  Author URI: http://nanhe.in/
 */

class Activation {

    public static function init() {
        add_action(\'admin_notices\', array(__CLASS__, \'text_admin_notice\'));
    }

    public static function text_admin_notice() {
        ?>
        <div class="notice notice-success is-dismissible">
            <p> TEST MESSAGE</p>
        </div>
        <?php
    }

}
add_action(\'init\', array(\'Activation\', \'init\'));
您的消息没有显示,因为您的类构造函数没有执行。您可以通过在构造函数中添加die进行测试,这样您就可以更好地了解发生了什么。

相关推荐

Testing hooks callback

我正在开发一个使用TDD的插件,有一件事我完全没有测试出来,那就是。。。挂钩。我的意思是好的,我可以测试钩子回调,但我如何测试钩子是否真的触发了(自定义钩子和WordPress默认钩子)?我认为一些嘲弄会有所帮助,但我就是想不出我错过了什么。我用WP-CLI安装了测试套件。根据this answer, init 钩子应该触发,但。。。事实并非如此;此外,该代码在WordPress内部工作。根据我的理解,引导程序是最后加载的,所以不触发init是有意义的,所以剩下的问题是:如果触发了挂钩,我该如何测试?谢谢