Sie sollten alle Ihre Klassen unabhängig vom tatsächlichen Standort machen, damit Sie sie problemlos verschieben und möglicherweise in anderen Projekten wiederverwenden können.
Ich würde eine Klasse erstellen, die den anderen Klassen mitteilt, welchen Pfad oder welche URL sie verwenden sollen, und eine Schnittstelle implementieren lassen, damit Sie die anderen Klassen möglicherweise sogar in einem Thema oder vollständig außerhalb von WordPress wiederverwenden können.
Beispiel für die Schnittstelle:
interface DirectoryAddress
{
/**
* @return string Dir URL with trailing slash
*/
public function url();
/**
* @return string Dir path with trailing slash
*/
public function path();
}
Die konkrete Implementierung in Ihrem Plugin könnte so aussehen:
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;
}
}
Jetzt erstellen Sie eine Instanz dieser Klasse in Ihrer Haupt-Plugin-Datei:
$address = new PluginDirectoryAddress( __DIR__ );
Und alle anderen Klassen haben nur eine Abhängigkeit von der Schnittstelle in ihrem Konstruktor, wie folgt:
public function __construct( DirectoryAddress $directory ) {}
Sie greifen jetzt nur von der übergebenen Instanz auf die URL und den Pfad zu.
class.Plugin_Controller.php
müsste das von der Datei im übergeordneten Verzeichnis verlangt werden, oder?