Você deve tornar todas as suas aulas independentes de sua localização real, para poder movê-las facilmente e talvez reutilizá-las em outros projetos.
Eu criaria uma classe que dissesse às outras classes qual caminho ou URL usar, que implementasse uma interface para que você pudesse reutilizar as outras classes, talvez até em um tema ou completamente fora do WordPress.
Exemplo para a interface:
interface DirectoryAddress
{
/**
* @return string Dir URL with trailing slash
*/
public function url();
/**
* @return string Dir path with trailing slash
*/
public function path();
}
A implementação concreta no seu plugin pode ser assim:
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;
}
}
Agora você cria uma instância dessa classe no seu arquivo principal de plug-in:
$address = new PluginDirectoryAddress( __DIR__ );
E todas as outras classes têm apenas uma dependência da interface em seu construtor, assim:
public function __construct( DirectoryAddress $directory ) {}
Eles estão acessando a URL e o caminho apenas a partir da instância passada agora.
class.Plugin_Controller.php
arquivo no diretório superior precisaria ser solicitado, correto?