如何让ob_start()在Wordpress插件中的类中工作?

时间:2019-05-04 07:35:04

标签: php wordpress plugins

我正在尝试将ob_start添加到我的Wordpress插件中的类中,如下所示:

class ObStart {
  public static function callback($buffer){
    return $buffer;
  }

  public static function add_ob_start(){
    ob_start("callback");
  }

  public static function flush_ob_end(){
    ob_end_flush();
  }
}

add_action('init', array( 'ObStart', 'add_ob_start' ) );
add_action('wp_footer', array( 'ObStart', 'flush_ob_end' ) );


这似乎不起作用,而是导致此错误:

Warning:  ob_start(): function 'callback' not found or invalid function name in <b>\wp-content\plugins\timeline-plugin\obstart.php on line 8

Notice:  ob_start(): failed to create buffer in \wp-content\plugins\timeline-plugin\obstart.php on line 8

Warning:  Cannot modify header information - headers already sent by (output started at \wp-includes\formatting.php:5520) in \wp-includes\pluggable.php on line 1251

Warning:  Cannot modify header information - headers already sent by (output started at \wp-includes\formatting.php:5520) in \wp-includes\pluggable.php</b> on line 1254

是否可以让ob_start在类中工作?如果是,我在哪里错了?

1 个答案:

答案 0 :(得分:0)

class Obstart 
{ 
      public static function callback($buffer)
      { 
           return $buffer; 
      } 

      public static function add_ob_start()
      { 
           global $buffer; 

           ob_start( self::callback($buffer) ); 
      }

      public static function flush_ob_end()
      { 
           ob_end_flush(); 
      } 
} 

add_action('init', array( 'Obstart', 'add_ob_start' ) ); 
add_action('wp_footer', array( 'Obstart', 'flush_ob_end' ) );