我想創建一個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;
}
}
當我激活我得到類似如下的錯誤插件:
我已閱讀其他用戶張貼在這裏的幾個問題,這可能會被複制的問題,但任何建議的回答爲我工作,包括:
從標籤開始甚至刪除空間刪除php結束標籤:沒什麼
wp_config.php
文件我設置wp_DEBUG
到true
改變,但它並沒有顯示錯誤
我已將該文件轉換爲
UTF8 (without BOM)
什麼都沒有改變
你已經把眼睛的問題?
是否存在除include_once $文件之外的其他包含'setup.class.php'的PHP文件'線? –
@JeffSisson其實,有任何。但我確定稍後將它們添加到最佳構造中。 – Drwhite
嘗試刪除on_activation()中的所有代碼,取消激活,然後重新激活插件,然後告訴我們會發生什麼。 [如果這樣做,請逐行瀏覽功能。] –