激活插件时Wordpress错误

时间:2017-06-09 18:13:39

标签: php wordpress

我在这里尝试了许多回答的问题...... 喜欢在<?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函数中关闭我的回声时,它很好“

   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');

我的回声怎么了?

2 个答案:

答案 0 :(得分:0)

最常见的原因是:

  1. PHP打开或关闭标记之前或之后的空格
  2. 以UTF-8
  3. 编码的文件
  4. 在错误的时间调用某些内容时的另一个问题,或者在没有干预的情况下无法解决的调用
  5. 使用WordPress add_option函数。切换到update_option可以解决问题。
  6. 我认为可能是UTF-8编码尝试将其更改为ANSI。

答案 1 :(得分:0)

我的猜测是,因为你在激活钩子和管理员通知上都调用了这个插件,所以只要插件被激活,就会调用admin_notices钩子(在同一个循环中)。因此,您的插件会在激活过程中的某个点抛出回声。因此,这是意外的行为,因为激活不希望回应任何东西。

我也没有看到在激活时运行此功能的任何需要。只能在admin_notices上调用它,并在必要时调整函数中的逻辑,以便只有在插件被激活后才会显示此通知。

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

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