我制作了一个WordPress插件,如下所示:
Class MY_CLASS {
//codes
}
Global $myclass;
$myclass = New MY_CLASS ();
安装并激活插件后,我可以在其他插件中使用这个类,而不包括myclass。php文件?例如,在另一个插件中:Global $myclass;
$myclass->a = \'dog\';
我制作了一个WordPress插件,如下所示:
Class MY_CLASS {
//codes
}
Global $myclass;
$myclass = New MY_CLASS ();
安装并激活插件后,我可以在其他插件中使用这个类,而不包括myclass。php文件?例如,在另一个插件中:Global $myclass;
$myclass->a = \'dog\';
从技术上讲,这是可能的。但我会使用稍微不同的方法。如果您的第二个插件首先加载,则会出现错误。如果您想替换另一个插件中的类,那么很难做到这一点。
因此,钩住plugins_loaded
以特定的优先级创建对象,并在同一挂钩上的第二个插件中以较低(稍后)优先级使用该对象:
add_action( \'plugins_loaded\', array ( \'My_Class\', \'init\' ), 10 );
class My_Class
{
/**
* Handler for the action \'init\'. Instantiates this class.
*
* @since 0.1
* @return void
*/
public static function init()
{
// Named global variable to make access for other scripts easier.
$GLOBALS[ __CLASS__ ] = new self;
}
public function __construct() { /* Do something awesome. */ }
}
插件2add_action( \'plugins_loaded\', \'depending_operation\', 11 );
function depending_operation()
{
if ( empty ( $GLOBALS[ \'My_Class\' ] ) )
{
return;
}
/* Do something awesome again. */
}
注意10和11英寸add_action()
? 这保证了您的第二个插件永远不会在第一个插件之前运行。它仍然需要检查第一个插件是否处于活动状态并正常工作。现在,您甚至可以在另一个插件中替换该类:
add_action( \'plugins_loaded\', \'replace_global_class\', 12 );
function replace_global_class()
{
$GLOBALS[ \'My_Class\' ] = new Replacement_Class;
}
class Replacement_Class {}
只会自动包含主插件文件。因此,如果插件的结构如下:
wp-content/plugins/my-plugin/
my-plugin.php
my-class.php
my-plugin.php 将包含在WordPress中。你可以确保MyClass
其他人可通过以下方式获得my-class.php
从您的my-plugin.php
文件托肖的回答很有效!另外,如果您正在制作一个插件,该插件可以通过附加组件进行扩展,那么附加组件仍然可以是OOP。
class My_Class_Addon(){
public function __construct() { /* Do something awesome as an addon to My_Class */ }
}
add_action( \'plugins_loaded\', \'My_Class_Addon_loader\', 11 );
function My_Class_Addon_loader(){
if(empty($GLOBALS[ \'My_Class\' ])){
return;
}
$this_my_class = new My_Class_Addon();
}
有两个不同的类别“生命科学”和“普通实验室”,还有关于“生命科学”的子类别产品。现在“普通实验室”类别想要获取“生命科学”拥有的所有子类别和产品。代码在类别中。php。以下是全部代码: <div id=\"container\"> <div id=\"content\" role=\"main\"> <?php if ( is_category(\'general-lab\') ) : ?> &#x