2015-05-28 56 views
3

我想創建一個wordpress插件,只需遵循here中列出的示例,該示例基於具有外部設置對象的類OOP體系結構,並以我自己的方式修改源代碼,如下所示: 主要插件文件:該插件在激活期間生成了N個意外輸出字符

<?php 
/* 
Plugin Name: My Plugin 
Description: My Plugin 
Version: 1.0 
Author: drwhite 
Author URL: drwhite-site 
Plugin URL: drwhite-site/video-ad-overlay 
*/ 

register_activation_hook(__FILE__, array('VAO_Setup_File_Inc', 'on_activation')); 
register_deactivation_hook(__FILE__, array('VAO_Setup_File_Inc', 'on_deactivation')); 
register_uninstall_hook(__FILE__, array('VAO_Setup_File_Inc', 'on_uninstall')); 

add_action('plugins_loaded', array('VAO_Setup_File', 'init')); 
class VAO_Setup_File{ 

    protected static $instance; 

    public static function init() 
    { 
     is_null(self::$instance) AND self::$instance = new self; 
     return self::$instance; 
    } 

    public function __construct() 
    { 
     add_action(current_filter(), array($this, 'load_files')); 
    } 

    public function load_files() 
    { 
     foreach (glob(plugin_dir_path(__FILE__).'includes/*.php') as $file){ 
      include_once $file; 
     } 
    } 
} 

在我的插件根目錄下我創建了一個名爲的子目錄包含內我把安裝文件被加載在插件載入名爲setup.class.php

<?php 
class VAO_Setup_File_Inc 
{ 
    public static function on_activation() 
    { 
     if (! current_user_can('activate_plugins')) 
      return; 
     $plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : ''; 
     check_admin_referer("activate-plugin_{$plugin}"); 
    } 

    public static function on_deactivation() 
    { 
     if (! current_user_can('activate_plugins')) 
      return; 
     $plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : ''; 
     check_admin_referer("deactivate-plugin_{$plugin}"); 
    } 

    public static function on_uninstall() 
    { 
     if (! current_user_can('activate_plugins')) 
      return; 
     check_admin_referer('bulk-plugins'); 

     // Important: Check if the file is the one 
     // that was registered during the uninstall hook. 
     if (__FILE__ != WP_UNINSTALL_PLUGIN) 
      return; 
    } 
} 

當我激活我得到類似如下的錯誤插件: enter image description here

我已閱讀其他用戶張貼在這裏的幾個問題,這可能會被複制的問題,但任何建議的回答爲我工作,包括:

從標籤開始甚至
  • 刪除空間刪除php結束標籤:沒什麼wp_config.php文件我設置wp_DEBUGtrue改變

  • ,但它並沒有顯示錯誤

  • 我已將該文件轉換爲UTF8 (without BOM)什麼都沒有改變

你已經把眼睛的問題?

+0

是否存在除include_once $文件之外的其他包含'setup.class.php'的PHP文件'線? –

+0

@JeffSisson其實,有任何。但我確定稍後將它們添加到最佳構造中。 – Drwhite

+0

嘗試刪除on_activation()中的所有代碼,取消激活,然後重新激活插件,然後告訴我們會發生什麼。 [如果這樣做,請逐行瀏覽功能。] –

回答

0

,因爲你的插件生成被輸出到該頁面的PHP錯誤,並導致頭部送你看到錯誤您收到此錯誤...你的代碼的問題是,你的函數

public function load_files() 
    { 
     foreach (glob(plugin_dir_path(__FILE__).'includes/*.php') as $file){ 
      include_once $file; 
     } 
    } 

不會被調用的時候,所以

register_activation_hook(__FILE__, array('VAO_Setup_File_Inc', 'on_activation')); 

正在尋找不存在的,是不存在的類中的功能。移動你的

foreach (glob(plugin_dir_path(__FILE__).'includes/*.php') as $file){ 
      include_once $file; 
     } 

完全在課外,它會加載得很好。它可能需要重新考慮你的

add_action('plugins_loaded', array('VAO_Setup_File', 'init')); 

,並正在創建插件的方式使用,但它是朝着正確方向邁出的一步。如果您從鏈接中複製並粘貼代碼,則代碼顯示相同的問題...

相關問題