Plugin saya menggunakan kode berikut untuk referensi file, tetapi saya sudah baca WP_PLUGIN_DIR
tidak akan berfungsi jika pengguna mengganti nama folder plugin default. Saya juga ingin mengganti /location-specific-menu-items/
dengan referensi ke folder plugin saat ini.
$gi = geoip_open(WP_PLUGIN_DIR ."/location-specific-menu-items/GeoIP.dat", GEOIP_STANDARD);
Bagaimana saya bisa menulis ulang ini agar berfungsi terlepas dari nama direktori plugin WP dan folder plugin tertentu?
EDIT:
Inilah solusi terakhir saya yang bekerja mengikuti masukan semua orang. Terimakasih banyak!
$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;
}
Jawaban:
Jika struktur plugin adalah:
lalu untuk PHP 5.3.0+, Anda bisa mencoba konstanta ajaib
__DIR__
dalam
some-plugin.php
file:Untuk dukungan PHP yang lebih luas, Anda dapat menggunakan
dirname( __FILE__ )
, di mana__FILE__
ditambahkan dalam PHP 4.0.2.sumber
plugin_dir_path( __FILE__ )
, maka itu adalah pembungkus untuktrailingslashit( dirname( __FILE__ ) )
yang menambahkan garis miring ke dirname.$file = plugin_dir_path( __FILE__ ) . 'data/GeoIP.dat';
apakah pekerjaan itu baik?Kamu bisa menggunakan:
Yang merupakan fungsi pembungkus tetap untuk:
sumber
Anda juga dapat melihat fungsi-fungsi yang dimiliki WordPress untuk hal ini: misalnya
plugin_dir_path()
,plugins_url()
atauplugin_dir_url()
Mereka akan membantu Anda menentukan di mana plugin Anda ditempatkan di server. Fungsi-fungsi itu juga direkomendasikan oleh Codex di Writing a Plugin: Names, Files, and Locations.
Selain itu Anda jelas dapat menggunakan konstanta ajaib dari PHP dan memfilter outputnya untuk menentukan di mana file Anda.
sumber
plugin_dir_url()
, ia mengembalikan folder untuk file yang Anda lewati, ya. Itu yang dia butuhkan.plugin_dir_path
mengembalikan direktori,plugin_dir_url
akan memberi Anda URL ke file, yang sama sekali bukan hal yang sama dan BUKAN apa yang dia butuhkan. itu berguna untuk hal-hal lain - seperti sumber gambar atau stylesheet enqueueing sekalipun.