如何访问插件主题中的类?

时间:2018-02-12 作者:Vishesh Madhusudhana

下面是我的文件夹结构。我需要访问WordPress主题控制器中的类。

控制器->WP\\U Db\\U连接。php

控制器->WP\\U产品。php

示例插件。php连接。php

class WP_Db_connection {

    public $dbConfig = [];
    public $errors = [];

    // Constructor
    function __construct() {
       self::init_db()
    }
    function init_db () {
       // Code to return DB connection
    }

}
new WP_Db_connection();
->WP\\U产品。php

require_once ROOT_PATH.\'/WP_Db_connection.php\';
class WP_Product{ 
   function __construct(){
     echo \'Inside Products\';
   }
}
new WP_Product();
->samplePlugin。php

spl_autoload_register ( "autoload", true, true );
function autoload($class){
    try{
        $classPath = ROOT_PATH.\'/controllers/\'.str_replace ( \'\\\\\', \'/\', $class ) . \'.php\';
        if($classPath && file_exists($classPath)){
            require_once $classPath;
        }
    } catch (Exception $e){
        echo \'<br>Exception caught: \'.$e;
    }
}
class WP_main {
  // Code for class
}
new WP_main();
在下面的主题代码中,WP\\u main存在,但其他类不存在。

echo \'WP_main: \'.class_exists(\'WP_main\');
echo \',WP_Product: \'.class_exists(\'WP_Product\');
echo \',WP_Db_connection: \'.class_exists(\'WP_Db_connection\');
输出:

WP_main: 1,WP_Db_connection: ,WP_Db_connection:

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

依赖其他插件和主题中的代码是有问题的。主要的问题是确保插件实际上处于活动状态,否则您的代码只会破坏站点。

您可以在使用类或函数之前检查它是否存在,但如果您的功能取决于它们的存在,如果它们不存在,您将怎么做?

wordpress与另一个插件建立依赖关系的正确方法是挂接它们提供的操作和过滤器,而不是直接尝试访问代码。实际上,即使该代码可用,也不能保证它在插件的下一个版本中仍然存在,而操作和过滤器应该是稳定的。

这取决于插件是否能够公开足够多的钩子和API,以使其对您有用,但如果不能,您不应该试图通过直接调用东西来破解它,除非您了解,您基本上要对您所做的每一个更改都对测试这两个插件负全责

结束

相关推荐

Metaboxes in Loop

我想在foreach循环中创建元盒。要求是,我有一个自定义帖子类型的数组,我想运行一个循环,为作为数组中键的帖子类型添加元盒。到目前为止,我已经开发了很多需求,但现在我被困在回调函数所在的部分add_meta_box() 将被调用。我用过call_user_func_array 调用回调函数并传递$key 作为参数,但它返回错误且不起作用。下面是我的代码:function rttk_create_boxes(){ $myarray = $this->rttk_get_posttype