激活WordPress插件后显示消息

时间:2016-07-06 21:04:53

标签: php wordpress plugins

我希望在激活插件后显示激活消息。

我已经看到了关于此问题的一些问题,但没有一个问题能够正常运作:

if (!get_option("startup")) {
    echo "<div class='updated'><h3>Welcome to [name]</h3>";
    update_option('startup', 'true');
}

那有效..有点儿。它将HTML放在最顶端,甚至在<!DOCTYPE>之前。有没有办法把它放在正确的地方?那么在body标签?

2 个答案:

答案 0 :(得分:10)

您需要在这里做一些事情。首先,register_activation_hook() function用于挂钩您的插件的激活。 admin_notices action用于在管理区域内添加通知(您无法在任何地方打印通知)。

但是,还有一个额外的复杂因素,即无法在插件激活时使用admin_notices操作。这是因为WordPress没有实时激活&#39;你的插件 - 它在后台激活它并抑制输出,以确保在完成激活之前它不会触发任何致命错误。

幸运的是,this blog post概述了此问题的解决方案。该帖子的作者建议使用transients来保存“状态”状态。您的插件,以便在激活后可以检索它。

因为该博客拥有像此网站一样的CC-BY-SA许可证,所以我会将代码复制到此处以便继续使用。我稍微压缩了它以保持这篇文章的长度,但你可以view the whole blog post获得完整的解决方案。我也对此进行了测试,以确保它仍然可以正常工作 - 而且在我安装WordPress 4.5.3时也是如此。

register_activation_hook( __FILE__, 'fx_admin_notice_example_activation_hook' );

function fx_admin_notice_example_activation_hook() {
    set_transient( 'fx-admin-notice-example', true, 5 );
}

add_action( 'admin_notices', 'fx_admin_notice_example_notice' );

function fx_admin_notice_example_notice(){

    /* Check transient, if available display notice */
    if( get_transient( 'fx-admin-notice-example' ) ){
        ?>
        <div class="updated notice is-dismissible">
            <p>Thank you for using this plugin! <strong>You are awesome</strong>.</p>
        </div>
        <?php
        /* Delete transient, only display this notice once. */
        delete_transient( 'fx-admin-notice-example' );
    }
}

答案 1 :(得分:0)

您可以使用'register_activation_hook( $file, $function );'挂钩轻松完成此操作。

function myplugin_activate() {
   echo "<div class='updated'><h3>Welcome to [name]</h3>";
}
register_activation_hook( __FILE__, 'myplugin_activate' );