Ви повинні зробити всі свої заняття незалежними від їх фактичного місцезнаходження, щоб ви могли легко переміщати їх та, можливо, повторно використовувати їх в інших проектах.
Я б створив клас, який повідомляє іншим класам, який шлях або URL використовувати, нехай він реалізує інтерфейс, щоб ви могли повторно використовувати інші класи, можливо, навіть у темі або зовсім поза WordPress.
Приклад інтерфейсу:
interface DirectoryAddress
{
/**
* @return string Dir URL with trailing slash
*/
public function url();
/**
* @return string Dir path with trailing slash
*/
public function path();
}
Конкретна реалізація у вашому плагіні може виглядати так:
class PluginDirectoryAddress implements DirectoryAddress
{
private $path;
private $url;
public function __construct( $dirpath )
{
$this->url = plugins_url( '/', $dirpath );
$this->path = plugin_dir_path( $dirpath );
}
/**
* @return string Dir URL with trailing slash
*/
public function url() {
return $this->url;
}
/**
* @return string Dir path without trailing slash
*/
public function path() {
return $this->path;
}
}
Тепер ви створюєте екземпляр цього класу в головному файлі плагінів:
$address = new PluginDirectoryAddress( __DIR__ );
А всі інші класи мають лише залежність від інтерфейсу у своєму конструкторі, як це:
public function __construct( DirectoryAddress $directory ) {}
Вони отримують доступ до URL-адреси та шляху лише від переданого екземпляра зараз.
class.Plugin_Controller.php
потрібно буде вимагати файл у вищому каталозі, правда?