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);
Verwenden Sie nicht das Plugin-Verzeichnis, um neue Dateien zu speichern.
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.
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 ) );
}
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/';