wake-up-neo.com

Wie erstelle ich ein Verzeichnis in einem Plugin-Ordner?

Ich erstelle ein Plugin in WordPress Version 3.4.2. Wenn der Administrator ein Formular sendet, wird ein neuer Ordner in meinem Plugin-Verzeichnis erstellt und eine Datei in diesem neuen Ordner gespeichert.

Aber es gibt mir den folgenden Fehler:

error : The file has not been created 

$dir = plugins_url()."/folder-name/; 

Der obige Code gibt den folgenden Pfad zurück:

http://localhost/website/wp-content/plugins/abc/folder-name

mkdir($dir, 0777, true);
1
Jassi Oberoi

Verwenden Sie nicht das Plugin-Verzeichnis, um neue Dateien zu speichern.

  • Während eines Updates wird das Plugin-Verzeichnis von WordPress gelöscht. Und alle Dateien auch.
  • Das Plugin-Verzeichnis ist in einigen Setups möglicherweise schreibgeschützt (das mache ich immer).

Verwenden Sie dazu das Verzeichnis für reguläre Uploads .

Und 0777 ist niemals eine gute Idee. Der Schreibzugriff für alle ist wahrscheinlich nicht das, was Ihre Benutzer möchten.

4
fuxia

Sie können plugin_dir_path in Ihrem Plugin verwenden, um den aktuellen Pfad im Dateisystem abzurufen.

define( 'YOURPLUGIN_PATH', plugin_dir_path(__FILE__) );

code der Funktion selbst

/**
 * Gets the filesystem directory path (with trailing slash) for the plugin __FILE__ passed in
 * @package WordPress
 * @subpackage Plugin
 * @since 2.8
 *
 * @param string $file The filename of the plugin (__FILE__)
 * @return string the filesystem path of the directory that contains the plugin
 */
    function plugin_dir_path( $file ) {
        return trailingslashit( dirname( $file ) );
    }
1
Butuzov

Kurzum: Sie benötigen einen PATH, keine URL

In long: Erstelle nicht Verzeichnisse in deinem Plugin-Ordner (siehe Toschos Antwort). Verwenden Sie die Konstante ´WP_CONTENT_DIR´ für den Pfad anstelle von plugins_url(). Dadurch wird das Verzeichnis innerhalb von ´wp-content´ erstellt (bei einer Standardinstallation). Möglicherweise definieren Sie ein Unterverzeichnis, in dem Sie die Verzeichnisse erstellen.

define( 'STORING_DIRECTORY', WP_CONTENT_DIR . '/my_plugin_storing_directory/' );
$dir = STORING_DIRECTORY . '/folder-name/';

Vielleicht möchten Sie das Upload-Verzeichnis verwenden, um Ihre Verzeichnisse zu erstellen. Dann sollten Sie wp_upload_dir() verwenden, um den Pfad zu ermitteln.

$upload_dir = wp_upload_dir();
$dir = $upload_dir['basedir'] . '/folder-name/';
1
Ralf912