Debe hacer que todas sus clases sean independientes de su ubicación real, de modo que pueda moverlas fácilmente y quizás reutilizarlas en otros proyectos.
Crearía una clase que les diga a las otras clases qué ruta o URL usar, deje que implemente una interfaz para que pueda reutilizar las otras clases, incluso en un tema o completamente fuera de WordPress.
Ejemplo para la interfaz:
interface DirectoryAddress
{
/**
* @return string Dir URL with trailing slash
*/
public function url();
/**
* @return string Dir path with trailing slash
*/
public function path();
}
La implementación concreta en su complemento podría verse así:
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;
}
}
Ahora crea una instancia de esa clase en su archivo de complemento principal:
$address = new PluginDirectoryAddress( __DIR__ );
Y todas las otras clases tienen solo una dependencia de la interfaz en su constructor, así:
public function __construct( DirectoryAddress $directory ) {}
Están accediendo a la URL y la ruta solo desde la instancia pasada ahora.
class.Plugin_Controller.php
archivo debe ser requerido por el archivo en el directorio superior, ¿correcto?