A documentação do WordPress para Determinação de diretórios de plug-in e conteúdo afirma que:
O WordPress utiliza as seguintes constantes ao determinar o caminho para os diretórios de conteúdo e plug-in. Eles não devem ser usados diretamente por plugins ou temas , mas estão listados aqui para garantir a integridade.
Ele continua listando WP_CONTENT_DIR
e WP_PLUGIN_DIR
entre constantes que os desenvolvedores de temas e plug-ins não devem usar, provavelmente por causa disso:
O WordPress permite que os usuários coloquem seu diretório wp-content em qualquer lugar que desejarem, portanto, você nunca deve assumir que os plug-ins estarão em wp-content / plugins, ou que os uploads estarão em wp-content / uploads ou que os temas estarão em wp- conteúdo / temas.
Mark Jaquith também comenta aqui que essas constantes não devem ser usadas:
Não use WP_PLUGIN_URL ou WP_PLUGIN_DIR - os plug-ins podem não estar no diretório de plug-ins.
Então, qual é a maneira aceita de referenciar o caminho completo para as pastas de plug-ins, conteúdo wp e temas sem usar essas constantes?
Como um exemplo simples, para gerar o caminho completo de todos os plugins instalados, eu posso fazer isso:
<?php
$plugins = get_plugins();
foreach ($plugins as $file => $details) {
echo WP_PLUGIN_DIR . '/' . $file . '<br>';
}
O que produz uma lista como esta:
/var/www/wp-content/plugins/akismet/akismet.php
/var/www/wp-content/plugins/debug-bar/debug-bar.php
/var/www/wp-content/plugins/hello.php
(Talvez eu queira fazer isso se estiver escrevendo um plug-in para permitir que o usuário arquive seletivamente plug-ins como parte de um backup do site, por exemplo.)
Se o uso WP_PLUGIN_DIR
estiver errado, qual é a alternativa sugerida? Não há equivalente wp_upload_dir()
para a pasta de plug-ins, temas e conteúdo wp que posso encontrar, o que torna problemática a referência a temas potencialmente errantes e diretórios raiz de plug-ins.
fonte
WP_PLUGIN_DIR
, portanto, minha pergunta aqui.Respostas:
Arquivo de referência no caminho atual ou aninhado mais profundo
Para referenciar o caminho atual
que funciona em plugins e temas .
Referência URl / URi em um plugin
Para apontar para um plugin ou arquivo de tema, use
que funciona apenas em plugins
Referência URl / URi na
wp-admin
pastaSempre aponte para eles
admin_url( 'some/path' );
. Existeget_admin_url()
também.Referência URl / Uri na
wp-includes
pastaAponte-os para
includes_url( 'some/path' );
Um URl / URi em relação à página inicial dos sites
Existe
home_url( 'etc' );
ouget_home_url()
para isso. Semelhante éget_site_url()
esite_url()
. Então também hánetwork_home_url()
. E você conseguiunetwork_admin_url()
wp-content
ou o diretório renomeadoVocê pode redefinir o
wp-content
nome da pasta. Portanto você usacontent_url()
lá.Como obter o URL da pasta de plugins?
Simplesmente use
plugins_url()
sem nenhum parâmetro.Se você usá-lo para um plug-in, ele também funciona para plug-ins de MU.
EDIT # 1 Se você estiver interessado no caminho para o plugin atual, use
plugin_basename();
.EDIT # 2 Se você estiver interessado em todos os plugins ativos laterais, use
wp_get_active_network_plugins();
.Se você não estiver em vários sites, vá com
wp_get_active_and_valid_plugins();
. Isso levará em consideração vários locais / rede. Lembre-se de que isso os levará em consideração se você não estiver em vários sites, mas tiver umasunrise.php
queda.Você também pode recuperá-los via
get_option( 'active_plugins' );
, o que não é recomendado , pois não leva em consideração a validação de filtros e plug-ins, o que acontece em várias ocasiões.Leitura adicional
Esta lista continua e continua. Dê uma olhada nos resultados da pesquisa em QueryPosts.com para obter mais informações.
Este artigo vai em profundidade absoluta sobre todos os caminhos.
fonte
plugins_url()
retorna o URL para a pasta plug-ins, não o caminho completo para o diretório no servidor. Existem funções semelhantes para lidar com diretórios que eu não conheço? Ou o conselho para não usar aWP_PLUGIN_DIR
constante é simplesmente errado?WP_PLUGIN_DIR
.Isso retorna o caminho do servidor do diretório do plug-in atual:
Ref: https://codex.wordpress.org/Function_Reference/plugin_dir_path
Não deve ser confundido com:
(Observe o plural "plugin s " sobre isso).
Como você não deseja que o nome do diretório do plugin seja retornado, precisamos removê-lo. Aqui está uma função que retorna o diretório do plugin e o nome do arquivo:
Mas é claro que também não queremos o nome do arquivo do plug-in, portanto, precisamos removê-lo
plugin_basename(__FILE__)
primeiro. Para retornar o nome do arquivo do plug-in:Então, para usá-los para construir um caminho para o diretório de plugins , podemos usar a
str_replace()
função algo como isto:E, se necessário, é claro que essa linha final pode ser atribuída a uma variável, para uso repetido.
Ao invés de:
Use algo como:
E mais tarde, quando necessário:
fonte