Mein Plugin verwendet den folgenden Code, um auf eine Datei zu verweisen, aber ich habe gelesen, WP_PLUGIN_DIR
dass dies nicht funktioniert, wenn ein Benutzer den Standard-Plugin-Ordner umbenennt. Ich möchte auch durch /location-specific-menu-items/
einen Verweis auf den aktuellen Plugin-Ordner ersetzen .
$gi = geoip_open(WP_PLUGIN_DIR ."/location-specific-menu-items/GeoIP.dat", GEOIP_STANDARD);
Wie könnte ich dies umschreiben, damit es funktioniert, unabhängig von den Namen des WP-Plugin-Verzeichnisses und des spezifischen Plugin-Ordners?
BEARBEITEN:
Hier ist meine endgültige Arbeitslösung, die allen Eingaben folgt. Danke vielmals!
$GeoIPv4_file = plugin_dir_path( __FILE__ ) . 'data/GeoIPv4.dat';
$GeoIPv6_file = plugin_dir_path( __FILE__ ) . 'data/GeoIPv6.dat';
if (!filter_var($ip_address, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === FALSE) {
if ( is_readable ( $GeoIPv4_file ) ) {
$gi = geoip_open( $GeoIPv4_file, GEOIP_STANDARD );
$user_country = geoip_country_code_by_addr($gi, $ip_address);
geoip_close($gi);
}
} elseif (!filter_var($ip_address, FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) === FALSE) {
if ( is_readable ( $GeoIPv6_file ) ) {
$gi = geoip_open( $GeoIPv6_file, GEOIP_STANDARD );
$user_country = geoip_country_code_by_addr($gi, $ip_address);
geoip_close($gi);
}
} else {
$user_country = "Can't locate IP: " . $ip_address;
}
Antworten:
Wenn die Plugin-Struktur ist:
Dann könnten Sie für PHP 5.3.0+ die magische Konstante ausprobieren
__DIR__
innerhalb der
some-plugin.php
Datei:Für eine breitere PHP-Unterstützung können Sie verwenden
dirname( __FILE__ )
, wo__FILE__
in PHP 4.0.2 hinzugefügt wurde.quelle
plugin_dir_path( __FILE__ )
, es ein Wrapper isttrailingslashit( dirname( __FILE__ ) )
, der dem Verzeichnisnamen einen abschließenden Schrägstrich hinzufügt.$file = plugin_dir_path( __FILE__ ) . 'data/GeoIP.dat';
würde war gut funktionieren?Sie können verwenden:
Was sowieso nur eine Wrapper-Funktion ist für:
quelle
Sie könnten auch einen Blick auf den Funktionen Wordpress für diesen an Bord haben: zB
plugin_dir_path()
,plugins_url()
oderplugin_dir_url()
Sie helfen Ihnen bei der Bestimmung, wo sich Ihr Plugin auf dem Server befindet. Diese Funktionen werden auch vom Codex beim Schreiben eines Plugins empfohlen : Namen, Dateien und Speicherorte.
Außerdem können Sie natürlich magische Konstanten aus PHP verwenden und deren Ausgabe filtern, um festzustellen, wo sich Ihre Dateien befinden.
quelle
plugin_dir_url()
, es gibt den Ordner für die Datei zurück, die Sie übergeben haben, ja. Das braucht er.plugin_dir_path
Gibt das Verzeichnis zurück undplugin_dir_url
gibt Ihnen die URL zu der Datei, die einfach nicht dasselbe ist und NICHT das, was er benötigt. Es ist nützlich für andere Dinge - wie Bildquellen oder das Einreihen von Stylesheets.