Mon plugin utilise le code suivant pour référencer un fichier, mais j'ai lu que WP_PLUGIN_DIR
cela ne fonctionnera pas si un utilisateur renomme le dossier du plugin par défaut. Je voudrais également remplacer /location-specific-menu-items/
par une référence au dossier du plugin actuel.
$gi = geoip_open(WP_PLUGIN_DIR ."/location-specific-menu-items/GeoIP.dat", GEOIP_STANDARD);
Comment pourrais-je réécrire cela pour le faire fonctionner indépendamment des noms du répertoire du plugin WP et du dossier du plugin spécifique?
ÉDITER:
Voici ma solution de travail finale suite à l'apport de tout le monde. Merci beaucoup!
$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;
}
Réponses:
Si la structure du plugin est:
alors pour PHP 5.3.0+, vous pouvez essayer la constante magique
__DIR__
dans le
some-plugin.php
fichier:Pour une prise en charge PHP plus large que vous pourriez utiliser
dirname( __FILE__ )
, où a__FILE__
été ajouté en PHP 4.0.2.la source
plugin_dir_path( __FILE__ )
, c'est un wrapper pourtrailingslashit( dirname( __FILE__ ) )
qui ajoute une barre oblique de fin au dirname.$file = plugin_dir_path( __FILE__ ) . 'data/GeoIP.dat';
marcherait bien?Vous pouvez utiliser:
Ce qui n'est de toute façon qu'une fonction wrapper pour:
la source
Vous pouvez également consulter les fonctions que WordPress a à bord pour cela: par exemple
plugin_dir_path()
,plugins_url()
ouplugin_dir_url()
Ils vous aideront à déterminer où votre plugin est placé sur le serveur. Ces fonctions sont également recommandées par le Codex dans l' écriture d'un plugin: noms, fichiers et emplacements.
En plus de cela, vous pouvez évidemment utiliser des constantes magiques de PHP et filtrer leur sortie pour déterminer où se trouvent vos fichiers.
la source
plugin_dir_url()
, il renvoie le dossier du fichier que vous avez passé, oui. C'est ce dont il a besoin.plugin_dir_path
renvoie le répertoire,plugin_dir_url
vous donnera l'URL du fichier, ce qui n'est tout simplement pas la même chose et PAS ce dont il a besoin. il est utile pour d'autres choses, comme les sources d'images ou la mise en file d'attente des feuilles de style.