Directório de 'plugins' do Wordpress get
Existe alguma função que retornaria o caminho completo do meu plugin em WordPress?
O exemplo é
path/wp-contents/plugins/myplugin
tentei plugin_dir_path(__FILE__)
mas devolve a pasta actual.
13 answers
SIM, de acordo com a descrição de 'plugin_dir_ Path, Dar-lhe-á a localização actual do ficheiro do 'plugin'. Mas de acordo com o que estás a pedir aqui, podes fazer algo como "abaixo", infelizmente, não de forma directa.
$plugin_dir = ABSPATH . 'wp-content/plugins/plugin-folder/';
$my_plugin = WP_PLUGIN_DIR . '/my-plugin';
if ( is_dir( $my_plugin ) ) {
// plugin directory found!
}
Alternativa
A outra alternativa válida é calcular o caminho a partir do URL que é mais complexo/confuso. Eu não usaria este código:
$plugins_url = plugins_url();
$base_url = get_option( 'siteurl' );
$plugins_dir = str_replace( $base_url, ABSPATH, $plugins_url );
// Now $plugins_dir is same as the WP_PLUGIN_DIR constant.
$my_plugin = $plugins_dir . '/my-plugin';
A minha opinião neste caso é:WP_PLUGIN_DIR
Código Para O 'Plugin' Root Path
$dir = plugin_dir_path( __FILE__ );
// Example: /home/user/var/www/wordpress/wp-content/plugins/my-plugin/
Código para a localização do plugin
echo WP_PLUGIN_DIR.'/plugin-name';
A minha solução foi usar o 'plugin' do interior DIR
plugin_dir_path( __DIR__ ) . $path_inside_plugin_folder;
O acima deve dar-lhe a localização absoluta da sua pasta de 'plugin' no servidor, para que possa carregar a sua variável com QUALQUER ficheiro dentro da sua pasta de 'plugin'
Aqui está uma solução, quando você não está dentro do plugin root:
Agora com 4.7.5, WordPress não tem um get_plugins_root() função, assim como não há um get_theme_root() function. Isto é provavelmente porque você realmente não deve precisar de modificar plugins do seu tema, e o diretório raiz dos plugins nunca muda.
No entanto, pode ser útil se precisar de afectar os plug-ins programaticamente durante o desenvolvimento tema.Simplesmente, como o WP faz para a raiz do tema:
$plugin_root = WP_CONTENT_DIR . '/plugins';
Ou, se você precisa de uma função, por que não apenas fazê-lo da mesma forma WordPress faz isso para a raiz tema?
Basta fazer uma cópia da função get_ theme_root () de wp-includes/theme.php e colá-lo nas funções do seu tema.ficheiro php, mudar o nome da função para get_plugins_ root (), simplificá-la e mudar o 'tema' para 'plugins' na função...
get_plugins_root() {
$plugins_root = WP_CONTENT_DIR . '/plugins';
/**
* Filters the absolute path to the plugins directory.
*
* @since now
*
* @param string $plugins_root Absolute path to plugins directory.
*/
return apply_filters( 'plugins_root', $plugins_root );
}
Com o caminho, você pode agora adicionar o nome da pasta plug-ins que deseja afectar.
$the_plugin_root = get_plugins_root()."/the-plugin-name/";
Excepto nos 'plugins' dir, os 'plugins' também podem estar em devem usar os 'plugins' dir
Por causa disso, temos de verificar vários directórios. Função de exemplofunction get_plugin_dir_path($pluginFolderName){
if ( defined( 'WPMU_PLUGIN_DIR' ) && file_exists( trailingslashit( WPMU_PLUGIN_DIR ) . $pluginFolderName ) ) {
return trailingslashit( WPMU_PLUGIN_DIR ) . $pluginFolderName;
} elseif ( defined( 'WP_PLUGIN_DIR' ) && file_exists( trailingslashit( WP_PLUGIN_DIR ) . $pluginFolderName ) ) {
return trailingslashit( WP_PLUGIN_DIR ) . $pluginFolderName;
}
return false;
}
Tal como indicado na secção Common Usage
da Página de referência da função dos Plugins, foi isso que funcionou para mim:
Se estiver a usar a função plugins_ URL () num ficheiro que está aninhado dentro de uma sub-pasta da sua pasta de 'plugins', deverá usar a função dirname() do PHP:
echo plugins_url('', dirname(__FILE__) );
A saída para isto foi:
http://domain/app/wp-content/plugins/my-plugin
O ficheiro que chamou a função era o meu functions.php
dentro de includes
, por isso o caminho completo para o meu ficheiro era:
http://domain/app/wp-content/plugins/my-plugin/includes/functions.php
plugin_dir_path( __FILE__ )
dar-lhe-á o 'plugin' da localização do ficheiro actual.
Isto é médio se você chamar esta função assim dentro de "your_ plugin_dir/sub_dir/file.php " will return " your_ plugin_dir/sub_dir/"
Se quiser obter o ROOT do seu directório de 'plugins', basta mudar __FILE__
para __DIR__
plugin_dir_path( __DIR__ )
Pode definir uma variável no seu ficheiro Php principal. Deve estar na raiz da sua pasta plugin. O arquivo deve estar aqui:.../wp-content/plugins/plugin-folder / my-plugin.php
Pode adicionar ao ficheiro esta linha.
define( 'MYPLUGIN__PLUGIN_URL', plugins_url('', __FILE__ ) );
Depois de poder usar a sua nova variável em qualquer ponto do seu plugin.
public function Test()
{
$folder2 = MYPLUGIN__PLUGIN_URL . '/folder1/folder2/';
// $folder2 = .../wp-content/plugins/plugin-folder/folder1/folder2/
}
Espero que ajude alguém.
plugins_url( 'images/logo.png' , dirname(__FILE__ ));
plugin_dir_path(__FILE__)
irá sempre devolver a localização actual (onde está localizado o ficheiro que o chama)
Se você quiser a raiz use o código abaixo
plugin_dir_path( dirname( __FILE__ ) )
Você pode então definir uma constante
define( 'YOUR_PLUGIN_DIR', plugin_dir_path( dirname( __FILE__ ) ) );
require_once YOUR_PLUGIN_PATH . 'includes/admin-page.php'
require_once YOUR_PLUGIN_PATH . 'admin/classes.php'
Consulte este
Http://codex.wordpress.org/Function_Reference/plugins_url
Para evitar que o manual especifique
Como mencionado por @tsl143 a função plugins_url()
é o que queres, juntamente com a constante mágica. Se você chamá-lo a partir de um arquivo dentro de sua pasta plugin que se referirá a essa pasta.
Exemplo:
Para o directório:
echo plugins_url( '' , __FILE__ );
//outputs: http://www.example.com/wp-content/plugins/my-plugin
Para um ficheiro ou subdiretório na sua pasta de 'plugins':
echo plugins_url( 'images/logo.png' , __FILE__ );
//outputs: http://www.example.com/wp-content/plugins/my-plugin/images/logo.png