web-dev-qa-db-ger.com

Wordpress Get Plugin Verzeichnis

Gibt es eine Funktion, die den vollständigen Pfad meines Plugins in WordPress zurückgibt?

Beispiel ist

path/wp-contents/plugins/myplugin

Ich habe plugin_dir_path(__FILE__) ausprobiert, gibt aber das aktuelle Verzeichnis zurück.

29
Cindy93

Ja, gemäß der Beschreibung von plugin_dir_path wird der aktuelle Pfad der Plugin-Datei angezeigt. Aber nach dem, was du hier fragst, kannst du unten etwas tun, leider keinen direkten Weg,

$plugin_dir = ABSPATH . 'wp-content/plugins/plugin-folder/';
25
Rikesh

Ich würde vorschlagen, eine interne WordPress-Konstante zu verwenden, um diesen Fall zu lösen:

$my_plugin = WP_PLUGIN_DIR . '/my-plugin';

if ( is_dir( $my_plugin ) ) {
    // plugin directory found!
}

Alternative

Die andere gültige Alternative ist, den Pfad aus der URL zu berechnen, die komplexer/verwirrender ist. Ich würde diesen Code nicht verwenden:

$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';

Meine Meinung ist in diesem Fall: Verwenden Sie die Konstante WP_PLUGIN_DIR

38
Philipp

Code für Plugin-Root-Pfad

$dir = plugin_dir_path( __FILE__ );
// Example: /home/user/var/www/wordpress/wp-content/plugins/my-plugin/

Code für den Plugin-Pfad

echo  WP_PLUGIN_DIR.'/plugin-name';
13
Vivek Tamrakar

Meine Lösung war innerhalb von plugin_dir_pathDIR 

plugin_dir_path( __DIR__ ) . $path_inside_plugin_folder;

Sie sollten den absoluten Pfad zu Ihrem Plugin-Ordner auf dem Server angeben. Dann können Sie Ihre Variable mit einer beliebigen Datei in Ihrem Plugin-Ordner laden

3
Jbro

Leider scheinen die meisten Antworten hier wichtige Dinge zu vergessen.

Mit Ausnahme von plugins dir können plugins auch in verwendet werden. Plugins dir

Aus diesem Grund müssen wir mehrere Verzeichnisse überprüfen. Beispielfunktion

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;

}
2
Maciej Paprocki

Hier ist eine Lösung, wenn Sie sich nicht im Plugin-Root befinden:

Ab jetzt mit 4.7.5 hat WordPress keine a get_plugins_root () - Funktion, wie es eine get_theme_root () - Funktion gibt. Dies ist wahrscheinlich darauf zurückzuführen, dass Sie niemals Plugins von Ihrem Design aus ändern müssen und das Stammverzeichnis des Plugins niemals geändert wird.

Es kann jedoch nützlich sein, wenn Sie Plug-Ins programmgesteuert beeinflussen müssen, während Sie Designs entwickeln.

Ganz einfach, wie es WP für das Designstamm tut:

$plugin_root = WP_CONTENT_DIR . '/plugins';

Oder, wenn Sie eine Funktion benötigen, warum machen Sie sie nicht genauso wie WordPress für das Designstamm?

Erstellen Sie einfach eine Kopie der Funktion get_theme_root () aus wp-include/theme.php und fügen Sie sie in die Datei functions.php Ihres Themes ein. Benennen Sie die Funktion in get_plugins_root () um, vereinfachen Sie sie und ändern Sie sie 'Theme' bis 'Plugins' in der Funktion ... 

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 );
}

Mit dem Pfad können Sie nun den Namen des Plug-In-Ordners hinzufügen, den Sie beeinflussen möchten.

$the_plugin_root = get_plugins_root()."/the-plugin-name/";
1
i_a

plugin_dir_path( __FILE__ ) gibt dir das Plugin Pfad der aktuellen Datei.

das bedeutet, wenn Sie diese Funktion in "your_plugin_dir/sub_dir/file.php" so aufrufen, wird "your_plugin_dir/sub_dir /" zurückgegeben

wenn Sie das ROOT Ihres Plugin-Verzeichnisses erhalten möchten, ändern Sie einfach __FILE__ bis __DIR__

plugin_dir_path( __DIR__ )
1

Wie im Abschnitt Common Usage der Plugins-URL Funktionsreferenzseite angegeben, funktionierte das bei mir:

Wenn Sie die plugins_url () - Funktion in einer Datei verwenden, die in einem Unterverzeichnis Ihres Plugin-Verzeichnisses verschachtelt ist, sollten Sie die dirname () - Funktion von PHP verwenden:

echo plugins_url('', dirname(__FILE__) );

Die Ausgabe dafür war: 

http://domain/app/wp-content/plugins/my-plugin

Die Datei, die die Funktion aufgerufen hat, war mein functions.php in includes. Der vollständige Pfad zu meiner Datei war also:

http://domain/app/wp-content/plugins/my-plugin/includes/functions.php
1
Brosig

Ich werde folgenden Code vorschlagen. wenn Sie von einem Unterordner auf diese Funktion zugreifen. 

plugins_url( 'images/logo.png' , dirname(__FILE__ ));
0
Lakin Mohapatra

Ein bisschen spät zu dieser Party, aber es gibt nur ein paar Dinge, die auf diese Party stoßen.

plugin_dir_path(__FILE__) Gibt immer den aktuellen Pfad zurück (wo sich die aufrufende Datei befindet) Wenn Sie möchten, dass der Stamm den folgenden Code verwendet

plugin_dir_path( dirname( __FILE__ ) )

Sie können dann eine Konstante definieren 

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
decoder88

Sie können eine Variable in Ihrer Haupt-PHP-Datei definieren. Es sollte sich im Stammverzeichnis Ihres Plugin-Ordners befinden. Die Datei sollte sich hier befinden: .../wp-content/plugins/plugin-folder/mein-plugin.php

Sie können diese Zeile in die Datei einfügen.

    define( 'MYPLUGIN__PLUGIN_URL', plugins_url('', __FILE__ ) );

Danach können Sie Ihre neue Variable überall in Ihrem Plugin verwenden.

    public function Test() 
    {   
            $folder2 = MYPLUGIN__PLUGIN_URL . '/folder1/folder2/';
           // $folder2 = .../wp-content/plugins/plugin-folder/folder1/folder2/
    }

Ich hoffe es hilft jemandem.

0
M07

Sie können es mit dieser Methode gewinnen

plugin_dir_url( __DIR__ )
0
Nishad Burhan