Je crée un plugin dans WordPress Version 3.4.2. Lorsque l'administrateur soumet un formulaire, un nouveau dossier est créé dans le répertoire de mon plugin et un fichier est enregistré dans ce nouveau dossier.
Mais cela me donne l'erreur suivante:
error : The file has not been created
$dir = plugins_url()."/folder-name/;
Le code ci-dessus renvoie le chemin suivant:
http://localhost/website/wp-content/plugins/abc/folder-name
mkdir($dir, 0777, true);
N'utilisez pas le répertoire du plugin pour stocker de nouveaux fichiers.
Utilisez le répertoire uploads régulier pour cela.
Et 0777
n'est jamais une bonne idée. L’accès en écriture pour tous n’est probablement pas ce que souhaitent vos utilisateurs.
Vous pouvez utiliser plugin_dir_path dans votre plugin pour obtenir le chemin actuel dans le système de fichiers.
define( 'YOURPLUGIN_PATH', plugin_dir_path(__FILE__) );
code de la fonction elle-même
/**
* 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 ) );
}
En bref: vous avez besoin d'un PATH, pas d'une URL
En long: Do not create répertoires dans votre dossier plugin (voir la réponse de Toscho). Utilisez la constante ´WP_CONTENT_DIR´ pour le chemin au lieu de plugins_url()
. Cela créera le répertoire dans "wp-content" (sur une installation standrad). Peut-être définirez-vous un sous-répertoire dans lequel vous créerez les répertoires.
define( 'STORING_DIRECTORY', WP_CONTENT_DIR . '/my_plugin_storing_directory/' );
$dir = STORING_DIRECTORY . '/folder-name/';
Peut-être souhaitez-vous utiliser le répertoire de téléchargement pour créer vos répertoires. Alors vous devriez utiliser wp_upload_dir()
pour obtenir le chemin.
$upload_dir = wp_upload_dir();
$dir = $upload_dir['basedir'] . '/folder-name/';