Moja wtyczka używa następującego kodu do odwołania się do pliku, ale przeczytałem, WP_PLUGIN_DIR
że nie zadziała, jeśli użytkownik zmieni nazwę domyślnego folderu wtyczek. Chciałbym również zastąpić /location-specific-menu-items/
odniesieniem do bieżącego folderu wtyczek.
$gi = geoip_open(WP_PLUGIN_DIR ."/location-specific-menu-items/GeoIP.dat", GEOIP_STANDARD);
Jak mogę to przepisać, aby działało niezależnie od nazw katalogu wtyczki WP i określonego folderu wtyczek?
EDYTOWAĆ:
Oto moje ostatnie działające rozwiązanie po uwagach wszystkich. Wielkie dzięki!
$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;
}
Odpowiedzi:
Jeśli struktura wtyczki to:
następnie dla PHP 5.3.0+ możesz wypróbować magiczną stałą
__DIR__
w
some-plugin.php
pliku:Aby uzyskać szerszą obsługę PHP, możesz użyć
dirname( __FILE__ )
, gdzie__FILE__
został dodany w PHP 4.0.2.źródło
plugin_dir_path( __FILE__ )
, to jest to opakowanie,trailingslashit( dirname( __FILE__ ) )
które dodaje ukośnik do nazwy katalogu.$file = plugin_dir_path( __FILE__ ) . 'data/GeoIP.dat';
praca byłaby dobra?Możesz użyć:
Która jak i tak jest tylko funkcją otoki dla:
źródło
Można również zapoznać się z funkcjami WordPress ma na pokładzie za to: na przykład
plugin_dir_path()
,plugins_url()
lubplugin_dir_url()
Pomogą ci ustalić, gdzie wtyczka zostanie umieszczona na serwerze. Te funkcje są również zalecane przez Kodeks przy pisaniu wtyczki: Nazwy, pliki i lokalizacje.
Poza tym możesz oczywiście używać magicznych stałych z PHP i filtrować ich dane wyjściowe, aby określić, gdzie są twoje pliki.
źródło
plugin_dir_url()
, zwraca folder dla przekazanego pliku, tak. Tego potrzebuje.plugin_dir_path
zwraca katalog,plugin_dir_url
poda ci URL do pliku, który po prostu nie jest tym samym i NIE jest tym, czego potrzebuje. jest przydatny do innych celów - takich jak źródła obrazów lub kolejkowanie arkuszy stylów.