2014-06-24 74 views
0

我正在嘗試爲Wordpress中的網站創建一個插件,用於練習和執行。在這個插件將是各種文件。我想要定義的插件目錄爲常數,所以我使用:Wordpress定義變量插件

define('CUSTOM_EDITING__URL', plugin_dir_url(__FILE__)); 

當我包括:

//FOLDERS 
define('WIDGETS', CUSTOM_EDITING__URL . 'widgets/'); 
require_once(WIDGETS . 'widgets.php'); 

我能夠得到文件widgets.php,但是當我打電話的內文件:

echo CUSTOM_EDITING__URL; 

我得到CUSTOM_EDITING__URL。我想要http://www.example.com/widgets/widget.php

有人可以解釋我失蹤了嗎?

編輯:關於手頭問題的更多信息。

現在我已經知道widgets.php不接受定義的變量。例如...調用文件能夠創建使用的格式的插件:

class Foo_Widget extends WP_Widget { 
    // Content 
} 

但widgets.php文件不能解決找到WP_Widget。

回答

1

所以這就是我的回答。我沒有任何實際的好文件來解釋它。我複製了Akismet插件中的一些元素,以成功按照我需要的方式工作。

define('CUSTOM_EDITING__URL', plugin_dir_url(__FILE__)); 
define('CUSTOM_EDITING__DIR', plugin_dir_path(__FILE__)); 


require_once(CUSTOM_EDITING__DIR . 'class.custom-editing-widget.php'); 
require_once(CUSTOM_EDITING__DIR . 'class.custom-editing.php'); 



register_activation_hook(__FILE__, array('CustomEditing', 'plugin_activation')); 
register_deactivation_hook(__FILE__, array('CustomEditing', 'plugin_deactivation')); 

add_action('init', array('CustomEditing', 'init')); 

在文件class.custom-editing.php我創建類與這些基礎參數:

class CustomEditing { 

    private static $initiated = false; 

    public function __construct(){ 
    } 

    public static function init() { 
     if (! self::$initiated) { 
      self::init_hooks(); 
     } 
    } 

    private static function init_hooks() { 
     self::$initiated = true; 
    } 
} 

這解決了我的那個被激活掛鉤,我相信創造任何基誤差。如果有人能夠用更好的術語來解釋這個部分,那麼我將不勝感激,但我不完全理解爲什麼這種方法有效,而我卻沒有。

0

恆方法可能會有所幫助:

echo constant("CUSTOM_EDITING__URL"); 
+0

'警告:常量()[function.constant]:找不到常量CUSTOM_EDITING__URL'這意味着它沒有被定義在文件中。這是什麼我看到...我不知道爲什麼沒有在文件中定義,因爲調用它的文件包括所有必要的文件調用。 –

+0

這就解釋了爲什麼'echo CUSTOM_EDITING__URL;'迴應文字字符串。這個代碼在widgets.php裏面嗎?您可能需要在widgets.php中爲聲明爲「CUSTOM_EDITING__URL」的文件添加一個'require'語句。 –

+0

我不知道如何完美解釋,但沒有奏效。拋出所使用的wordpress函數的錯誤,因爲它基本上沒有連接到wordpress文件..這是我最好的猜測......它應該能夠去**基礎文件>子文件夾>文件>功能**,但現在它只是**基礎文件**,不會更深入 –