为什么我的常量在我的类之外不可用?

时间:2012-04-13 作者:Steven

我正在开发一个插件,并尝试使用一个类(遵循另一个插件的方法)。但我不明白为什么我的常量不能全局可用。这是我的代码:

/*
Plugin Name: Some simple plugin
*/

  if (!session_id())
    session_start();

class myPluginClass {

  function __construct() {
    /* Set the constants needed by the plugin. */
    add_action( \'plugins_loaded\', array( &$this, \'constants\' ), 1 );
  }


  function constants() {
    $upload_dir = wp_upload_dir();

    define( \'SIMPLE_GALLERY_DIR\', trailingslashit( str_replace(\'\\\\\', \'/\', plugin_dir_path( __FILE__ )) ) );

    //This works and outputs http://.....
    echo SIMPLE_GALLERY_URL;
  }

}

$sg = new simpleGallery();
//This does not work and outputs SIMPLE_GALLERY_URL.
echo SIMPLE_GALLERY_URL;
以上两项的结果是:SIMPLE_GALLERY_URLhttp://.....

这意味着我的最后一个echo是在类之前执行的。还是这样?

constants() 已附加到plugins_loaded 钩子-这可能是在页面加载后执行的吗?

1 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

您的常量是在“plugins\\u-loaded”操作中定义的,但您正试图在该操作执行之前访问它。

结束

相关推荐

__FILE__ in WordPress plugins

我正在使用Sidebar Generator 在我所有的主题中。该插件在“plugins”目录下正常工作,但我想以某种方式将其嵌入到我的主题中,因此它不会显示在已安装的插件列表中。我刚刚复制了sidebar\\u生成器。php(幸运的是,整个代码都在一个文件中)到mytheme/插件,并将其包含在函数中。phprequire_once (MY_PLUGINS . \'/sidebar_generator.php\'); 现在,它适用于所有其他插件,但不适用于这个插件!这样,当我点击“侧栏”时