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.

Author: Rikesh, 2013-12-26

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/';
 22
Author: Rikesh, 2013-12-26 06:55:12
[[4]} eu sugeriria usar uma constante interna do WordPress para resolver este caso:
$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
 30
Author: Philipp, 2015-05-21 18:56:14

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';
 12
Author: Vivek Tamrakar, 2016-07-14 05:40:28

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'

 2
Author: Jbro, 2017-09-14 23:34:19

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/";
 1
Author: i_a, 2017-06-06 19:58:17
Infelizmente, a maioria das respostas parecem esquecer-se de algo importante.

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 exemplo
function 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;

}
 1
Author: Maciej Paprocki, 2017-11-23 14:44:29

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
 1
Author: Brosig, 2018-03-04 19:49:01

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__ )
 1
Author: Rio Adetya Rizky, 2018-08-04 15:26:20

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.
 0
Author: M07, 2015-02-15 10:31:53
Vou sugerir seguir o código. se você estiver acessando esta função a partir de qualquer subpasta.
plugins_url( 'images/logo.png' , dirname(__FILE__ ));
 0
Author: Lakin Mohapatra, 2016-10-25 08:29:19
É um pouco tarde para esta festa, mas incita mais alguém a tropeçar nisto.

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'
 0
Author: decoder88, 2017-01-26 00:40:26

Consulte este

Http://codex.wordpress.org/Function_Reference/plugins_url

Para evitar que o manual especifique

 -1
Author: Trishul, 2013-12-26 16:14:48

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    
 -1
Author: harryg, 2014-04-09 10:07:31