我试图在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。
答案 0 :(得分: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;
}
}
这解决了我认为由激活挂钩创建的任何基本错误。如果有人可以用更好的方式解释这些部分,那将是值得赞赏的,但我不完全理解为什么这样做有效,而我没有做到。
答案 1 :(得分:0)
常量方法可能会有所帮助:
echo constant("CUSTOM_EDITING__URL");