【问题标题】:Wordpress Error when Activating Plugin激活插件时出现 Wordpress 错误
【发布时间】:2017-11-11 20:35:57
【问题描述】:

我在这里尝试了许多已回答的问题... 比如删除<?php之前和?>之后的空格

根本不工作 我还是卡住了..

下面是我的代码..

add_action( 'admin_notices', 'fii' );
function fii(){
    // parent plugin
    if ( ! is_plugin_active( 'xxx/aaa.php' ) and current_user_can( 'activate_plugins' ) ) {
        echo '<div class="notice notice-warning"><p>You need install xxxx plugin</p></div>';
    }
}
register_activation_hook( __FILE__, 'fii' );

问题是当激活我的插件时,wordpress 会给我这样的错误信息..

“插件在激活期间生成了 281 个字符的意外输出。如果您发现“标头已发送”消息、联合提要问题或其他问题,请尝试停用或删除此插件。”

但是当我在 fii 函数中关闭我的 echo 时,它很好”

   add_action( 'admin_notices', 'fii' );
    function fii(){
        // parent plugin
        if ( ! is_plugin_active( 'xxx/aaa.php' ) and current_user_can( 'activate_plugins' ) ) {
            //echo '<div class="notice notice-warning"><p>You need install xxxx plugin</p></div>';
        }
    }
    register_activation_hook( __FILE__, 'fii');

我的回声有什么问题??

【问题讨论】:

  • 你的问题一定出在别处,代码有效,而且你的回显不是281个字符。
  • 你为什么要将 fii 分配给 admin_notices 以及激活钩子?

标签: php wordpress


【解决方案1】:

我的猜测是,由于您在激活钩子和管理员通知中都调用此插件,因此一旦激活插件,就会调用 admin_notices 钩子(在同一个周期中)。结果,您的插件在激活过程中的某个时间点抛出了回声。因此,这是出乎意料的行为,因为激活并不期望回显任何内容。

我也认为不需要在激活时运行此功能。仅在 admin_notices 上调用它,并在必要时调整函数中的逻辑,以便仅在激活插件后才显示此通知。

此外,目前您的代码并未考虑 3rd 方插件是否处于活动状态甚至是否已安装。因此,即使用户安装并激活了这个其他插件,他们也会收到该消息。

已经有一个很棒的库用于向 WordPress 安装添加必需和推荐的插件,名为 TGM Plugin Activation。我强烈建议您使用它而不是创建自己的逻辑。

【讨论】:

  • 它的工作兄弟...谢谢我删除此行代码register_activation_hook( __FILE__, 'fii_plugin_activate' );
  • 优秀。如果您认为我应该得到额外的几分,您也可以给我的答案“投票”。单独的 TGMPA 建议必须是值得的。 ;-)
【解决方案2】:

最常见的原因是:

  1. PHP 开始或结束标记前后的空格
  2. 以 UTF-8 编码的文件
  3. 另一个问题是在错误的时间调用某些东西,或者如果没有干预就无法解决调用问题
  4. 使用 WordPress add_option 函数。改用 update_option 可以解决问题。

我认为可能是 UTF-8 编码尝试将其更改为 ANSI。

【讨论】:

    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 2021-06-19
    • 2012-07-16
    • 2015-04-26
    • 2021-12-31
    • 2012-08-28
    • 2014-05-02
    • 2012-11-19
    相关资源
    最近更新 更多