【问题标题】:Show message after activating WordPress plugin激活 WordPress 插件后显示消息
【发布时间】:2016-11-09 01:55:38
【问题描述】:

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

我在 SO 上看到了一些关于此的问题,但它们都不能正常工作:

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

这行得通..有点。它将 HTML 放在最顶部,甚至在 &lt;!DOCTYPE&gt; 之前。有没有办法把它放在正确的地方?那么在body标签中呢?

【问题讨论】:

  • 您是否尝试在正确的位置调用它?

标签: php wordpress plugins


【解决方案1】:

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

但是,还有一个额外的问题是您不能在插件激活时使用admin_notices 操作。这是因为 WordPress 不会“实时激活”您的插件 - 它会在后台激活它并抑制输出,以确保在完成激活之前它不会触发任何致命错误。

幸运的是,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' );
    }
}

【讨论】:

    猜你喜欢
    • 2015-09-06
    • 2017-01-17
    • 1970-01-01
    • 2013-10-24
    • 2012-08-28
    • 2013-05-28
    • 1970-01-01
    • 2014-11-05
    • 2017-11-11
    相关资源
    最近更新 更多