Meu plug-in usa o código a seguir para fazer referência a um arquivo, mas li WP_PLUGIN_DIR
que não funcionará se um usuário renomear a pasta padrão do plug-in. Eu também gostaria de substituir /location-specific-menu-items/
por uma referência à pasta atual do plugin.
$gi = geoip_open(WP_PLUGIN_DIR ."/location-specific-menu-items/GeoIP.dat", GEOIP_STANDARD);
Como eu poderia reescrever isso para fazê-lo funcionar, independentemente dos nomes do diretório do plugin WP e da pasta específica do plugin?
EDITAR:
Aqui está a minha solução final de trabalho, seguindo a opinião de todos. Muito Obrigado!
$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;
}
Respostas:
Se a estrutura do plug-in for:
então, para o PHP 5.3.0+, você pode tentar a constante mágica
__DIR__
dentro do
some-plugin.php
arquivo:Para um suporte mais amplo ao PHP você pode usar
dirname( __FILE__ )
, onde__FILE__
foi adicionado no PHP 4.0.2.fonte
plugin_dir_path( __FILE__ )
, é um invólucrotrailingslashit( dirname( __FILE__ ) )
que adiciona uma barra final ao nome do diretório.$file = plugin_dir_path( __FILE__ ) . 'data/GeoIP.dat';
, o trabalho estava bem?Você pode usar:
Que, como é apenas uma função de invólucro de qualquer maneira para:
fonte
Você também pode dar uma olhada nas funções que o WordPress possui para isso: por exemplo
plugin_dir_path()
,plugins_url()
ouplugin_dir_url()
Eles ajudarão você a determinar onde o plug-in está colocado no servidor. Essas funções também são recomendadas pelo Codex ao escrever um plug-in: nomes, arquivos e locais.
Além disso, você pode obviamente usar constantes mágicas do PHP e filtrar sua saída para determinar onde estão seus arquivos.
fonte
plugin_dir_url()
, ele retorna a pasta do arquivo que você passou, sim. É disso que ele precisa.plugin_dir_path
retorna o diretório,plugin_dir_url
fornecerá a URL para o arquivo, que simplesmente não é a mesma coisa e NÃO é o que ele precisa. é útil para outras coisas - como fontes de imagem ou enfileirar folhas de estilo.