激活 WordPress 插件后显示消息

Posted

技术标签:

【中文标题】激活 WordPress 插件后显示消息【英文标题】:Show message after activating WordPress plugin 【发布时间】: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标签中呢?

【问题讨论】:

您是否尝试在正确的位置调用它? 【参考方案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' );
    

【讨论】:

以上是关于激活 WordPress 插件后显示消息的主要内容,如果未能解决你的问题,请参考以下文章

我无法在 localhost 上激活我的 WordPress 插件

在 Wordpress 中激活 Unyson 插件时出错致命错误

WordPress,cron和time - 服务器上的时间会影响插件吗?怎么解决?

仅在 WordPress 中激活和停用插件时运行 JS 文件

Wordpress 239 字符意外输出错误

该插件在激活期间生成了xxx个字符的意外输出[重复]