Maison > Tutoriel CMS > WordPresse > Une introduction à l'API du système de fichiers WordPress

Une introduction à l'API du système de fichiers WordPress

Jennifer Aniston
Libérer: 2025-02-17 08:38:10
original
701 Les gens l'ont consulté

Une introduction à l'API du système de fichiers WordPress

L'écriture dans les fichiers locaux est l'une des fonctionnalités dont les nombreux plugins et thèmes ont besoin à diverses fins. La sécurité est le problème les plus importants que les plugins et les thèmes doivent s'occuper de l'écriture dans les systèmes de fichiers locaux. WordPress se déroule sur divers services et configurations d'hébergement, il devient donc difficile pour les développeurs de créer des plugins et des thèmes qui accèdent aux systèmes de fichiers locaux pour fonctionner dans tous les différents types d'environnements sans compromettre la sécurité.

Dans ce didacticiel, nous apprendrons à utiliser l'API de Système de fichiers WordPress pour accéder aux systèmes de fichiers locaux qui s'occupent des autorisations de fichiers appropriées. Dans le processus, nous allons créer un plugin qui affiche un formulaire avec un TextArea dans une page d'administration qui enregistre le contenu de la TextArea dans un fichier.

Les plats clés

  • L'API du système de fichiers WordPress fournit une méthode sécurisée pour les plugins et les thèmes à écrire dans les systèmes de fichiers locaux, en gérant automatiquement les autorisations de fichiers, ce qui est important étant donné la variété des services d'hébergement et des configurations que WordPress fonctionne à travers.
  • L'API peut écrire dans des systèmes de fichiers via des appels système, en choisissant la méthode la plus appropriée basée sur les autorisations de fichiers et les extensions PHP disponibles. Il peut également stocker des informations d'identification de l'utilisateur pour les connexions FTP ou SSH.
  • Le tutoriel montre comment créer un plugin à l'aide de l'API. Le plugin affiche un formulaire dans une page d'administration, enregistrant le contenu d'une TextArea dans un fichier. Le tutoriel fournit des codes pour créer des fichiers et répertoires de plugin, la création d'une page d'administration et l'écriture et la lecture d'un fichier.
  • L'objet $ wp_filesystem, une instance de la classe WP_FileSystem, expose des méthodes pour la lecture, la création, l'écriture et la suppression de fichiers. Les autres méthodes disponibles comprennent la suppression, le MKDIR, le mouvement, la taille et le chod.
  • WordPress ne stocke pas de manière permanente FTP ou SSH par défaut, mais ils peuvent être stockés en permanence à l'aide du fichier wp-config.php. Cela évite de rentrer dans les informations d'identification chaque fois que le plugin interagit avec le système de fichiers.

Pourquoi utiliser l'API du système de fichiers WordPress?

Vous vous demandez peut-être pourquoi nous n'utilisons pas seulement les fonctions du système de fichiers de PHP pour lire et écrire des fichiers locaux au lieu d'apprendre et d'utiliser un tout nouvel ensemble d'API?

Le problème de l'utilisation des API du système de fichiers PHP est qu'il ne prend pas en charge automatiquement les autorisations de fichiers. Supposons que vous utilisiez un service d'hébergement partagé pour héberger votre site WordPress et que votre serveur Web d'hébergement s'exécute en tant que compte du système d'exploitation «Admin». Chaque fois que vous créez des fichiers à l'aide de PHP, ils appartiennent à l'utilisateur «Admin». Par conséquent, tout autre site Web hébergé dans le même hébergement partagé peut également accéder à vos fichiers de site Web car ils s'exécutent également en tant qu'utilisateur «Admin», posant un problème de sécurité à votre site. Pour nous protéger de ce problème, vous devez modifier le propriétaire du fichier et les autorisations manuellement à l'aide de php.

Mais lorsque vous vous connectez à l'aide de SSH ou FTP / SFTP pour créer des fichiers, ils appartiennent au compte d'utilisateur du système d'exploitation que vous êtes connecté. Si le serveur FTP s'exécute en tant qu'utilisateur «Admin» et que vous êtes connecté en tant qu'utilisateur «Narayanpruty», les fichiers nouvellement créés auront un propriétaire en tant que «Narayanpruty», pas «admin».

WordPress a introduit l'API du système de fichiers qui peut s'occuper automatiquement des autorisations de fichiers. L'API du système de fichiers a été publiée dans WordPress 2.6. WordPress l'a réellement publié pour prendre en charge son plugin, son système de mise à jour de plugin, de thème et de base, mais plus tard sur les plugins et les thèmes qui commencent à l'utiliser à leurs propres fins.

Comment fonctionne l'API du système de fichiers?

L'API du système de fichiers peut écrire dans des systèmes de fichiers à l'aide d'appels système (c'est-à-dire directement, FTP, socket FTP ou SSH2). Il choisit l'une des méthodes basées sur la méthode qui crée des fichiers avec des autorisations de fichiers appropriées et quelle extension PHP est disponible. L'API du système de fichiers vérifie d'abord la méthode directe, puis FTP et enfin ssh2.

En utilisant FTP ou SSH, vous devrez obtenir les informations d'identification de votre utilisateur. L'API du système de fichiers fournit une fonction facilite l'affichage d'un formulaire pour prendre des informations d'identification et les stocker.

Création de nos fichiers de plugin et de notre répertoire

Créons maintenant notre plugin qui affiche une TextArea dans une page, où la soumission du formulaire enregistre le contenu de la TextArea dans un fichier local.

Voici la structure du répertoire de notre plugin:

--filesystem
	--filesystem.php
	--filesystem-demo
		--demo.txt
Copier après la connexion
Copier après la connexion

Créez ces fichiers et répertoires dans le répertoire WP-Content / Plugins de votre installation WordPress.

Pour rendre le plugin installable, mettez ce code dans le fichier fileSystem.php:

<span><span><?php
</span></span><span>  
</span><span><span>/*
</span></span><span><span>Plugin Name: Filesystem API
</span></span><span><span>Plugin URI: http://www.sitepoint.com
</span></span><span><span>Description: A sample plugin to demonstrate Filesystem API
</span></span><span><span>Version: 1.0
</span></span><span><span>Author: Narayan Prusty
</span></span><span><span>*/</span></span>
Copier après la connexion
Copier après la connexion

Visitez maintenant votre panneau d'administration et installez le plugin.

Création d'une page d'administration

Ensuite, nous avons besoin d'une page dans notre administrateur où notre exemple résidera. Voici le code pour créer cette page et afficher la TextArea. Placez simplement ce code dans le fichier fileSystem.php:

function menu_item()
{
  add_submenu_page("options-general.php", "Demo", "Demo", "manage_options", "demo", "demo_page"); 
}
 
add_action("admin_menu", "menu_item");

function demo_page()
{
  ?>
      <span><span><span><div</span> class<span>="wrap"</span>></span>
</span>         <span><span><span><h1</span>></span>Demo<span><span></h1</span>></span>
</span>         <span><span><span><form</span> method<span>="post"</span>></span>
</span>          <span><span><?php
</span></span><span>            <span>$output = "";
</span></span><span>
</span><span>            <span>if(isset($_POST["file-data"]))
</span></span><span>            <span>{
</span></span><span>              <span>$output = write_file_demo($_POST["file-data"]);
</span></span><span>            <span>}
</span></span><span>            <span>else
</span></span><span>            <span>{
</span></span><span>              <span>$output = read_file_demo();
</span></span><span>            <span>}
</span></span><span>
</span><span>            <span>if(!is_wp_error($output))
</span></span><span>            <span>{
</span></span><span>            	<span>?></span>
</span>            		<span><span><span><textarea</span> name<span>="file-data"</span>></span><span><?php echo $output; ?></span><span><span></textarea</span>></span>
</span>		          	<span><span><?php wp_nonce_field("filesystem-nonce"); ?></span>
</span>		          	<span><span><span><br</span>></span>
</span>		          	<span><span><span><input</span> type<span>="submit"</span>></span>
</span>            	<span><span><?php
</span></span><span>            <span>}
</span></span><span>            <span>else
</span></span><span>            <span>{
</span></span><span>              <span>echo $output->get_error_message();
</span></span><span>            <span>}
</span></span><span>          <span>?></span>
</span>         <span><span><span></form</span>></span>
</span>      <span><span><span></div</span>></span>
</span>   <span><span><?php
</span></span><span><span>}</span></span>
Copier après la connexion

Voici comment fonctionne le code:

  • Nous avons d'abord ajouté une page au menu "Paramètres". Demo_Page est le rappel pour afficher le contenu de la page.
  • À l'intérieur de la page, nous affichons un formulaire HTML avec un champ TextArea et NONCE. Il y a aussi un bouton de soumission pour soumettre le formulaire. Le nom de TextArea est des données de fichiers. Le nonce est ajouté pour empêcher une attaque CSRF.
  • Lorsque la page est ouverte, nous récupérons les données de fichier stockées à l'aide de la fonction read_file_demo. Lorsque le formulaire est soumis, nous stockons le contenu de la TextArea dans un fichier à l'aide de la fonction écrite_file_demo.
  • si read_file_demo ou write_file_demo renvoie une instance de l'objet wp_error, alors nous afficherons un message d'erreur à la place.

Remarque, le code ci-dessus rompra votre site WordPress, car nous n'avons pas encore créé les fonctions read_file_demo et write_file_demo. Créons-les maintenant!

Écriture dans un fichier

Voici l'implémentation de notre fonction write_file_demo:

--filesystem
	--filesystem.php
	--filesystem-demo
		--demo.txt
Copier après la connexion
Copier après la connexion

Voici comment fonctionne le code:

  • Nous avons d'abord référencé l'objet global $ wp_filesystem à l'intérieur de la fonction. Cet objet est une instance de la classe WP_FileSystem. Il est chargé d'exposer diverses méthodes pour la lecture, la création, l'écriture et la suppression de fichiers.
  • Ensuite, nous créons une URL nonce de notre page de formulaire et un tableau avec les noms de champ de notre formulaire.
  • Enfin, nous nous connectons au système de fichiers à l'aide de la fonction connect_fs.
  • connect_fs utilise la fonction request_filesystem_credentials fournie par WordPress pour trouver une méthode appropriée pour se connecter au système de fichiers (Direct, FTP ou SSH). Dans le cas de FTP ou SSH, il fait écho à un formulaire pour demander les informations d'identification de l'utilisateur. Dans le cas d'une méthode directe, il renvoie simplement True.
  • Lorsque le formulaire TextArea est soumis et que la méthode FTP ou SSH, nous affichons le formulaire d'identification et masque le champ de données de fichier dans le formulaire d'identification.
  • request_filesystem_credentials La fonction de la fonction de la fonction prend une URL où rediriger une fois qu'il a obtenu les informations d'identification correctes. La redirection est de la demande post-post. Le dernier paramètre request_filesystem_credentials est un tableau des noms de champ à publier vers l'URL de redirection.
  • Une fois le formulaire d'identification soumis, il redirige vers le formulaire d'origine Soumettre l'URL avec les noms de champ appropriés et les valeurs qui ont été saisies par l'utilisateur.
  • Encore une fois, l'ensemble du processus démarre et nous exécutons le write_file_demo. Cette fois request_filesystem_credentials a les informations d'identification, donc il renverra simplement vrai.
  • Ensuite, nous utilisons $ wp_filesystem-> find_folder pour référence au dossier. Ensuite, nous construisons le chemin complet du fichier Demo.txt.
  • Nous avons utilisé $ wp_filesystem-> put_contents pour écrire des données dans le fichier.

Remarque: Si vous essayez d'utiliser les méthodes de l'objet $ WP_FILESYSTEM sans demander et vérifier les informations d'identification, ils ne fonctionneront pas.

lire un fichier

Voici l'implémentation de la fonction read_file_demo.

<span><span><?php
</span></span><span>  
</span><span><span>/*
</span></span><span><span>Plugin Name: Filesystem API
</span></span><span><span>Plugin URI: http://www.sitepoint.com
</span></span><span><span>Description: A sample plugin to demonstrate Filesystem API
</span></span><span><span>Version: 1.0
</span></span><span><span>Author: Narayan Prusty
</span></span><span><span>*/</span></span>
Copier après la connexion
Copier après la connexion

Voici comment fonctionne le code:

  • En lisant le fichier Demo.txt, nous nous connectons d'abord au système de fichiers à l'aide de la fonction request_filesystem_credentials.
  • Cette fois, nous ne faisons pas passer de champs de formulaire dans le dernier paramètre car le formulaire n'est pas soumis. Nous ne faisons que passer l'URL de redirection afin qu'il soit redirigé une fois les informations d'identification récupérées.
  • Nous vérifions ensuite si le fichier existe en utilisant la fonction $ wp_filesystem-> existant. Le fichier ne existe pas, nous affichons une erreur. Sinon, nous lisons le fichier en utilisant la fonction $ wp_filesystem-> get_contents et renvoyant le contenu.

En supposant que WordPress a choisi FTP comme méthode appropriée pour créer des fichiers, voici les captures d'écran de l'ensemble du processus:

Tout d'abord lorsque nous ouvrons la page de démonstration, nous verrons ce formulaire:

Une introduction à l'API du système de fichiers WordPress

Ici, nous devons saisir des informations d'identification FTP ou FTPS et la soumettre. Une fois que nous l'avons soumis, nous verrons ce formulaire:

Une introduction à l'API du système de fichiers WordPress

Une textare vide a été affichée. Entrez le texte "Hello World !!!" soumettre le formulaire. Vous verrez à nouveau le formulaire d'identification.

Une introduction à l'API du système de fichiers WordPress

Vous devez le remplir à nouveau parce que WordPress ne stocke pas le mot de passe FTP par défaut (vous pouvez le faire dans WP-Config.php, plus à ce sujet plus tard). Ainsi, chaque fois que votre plugin doit fonctionner avec un système de fichiers, il doit demander des informations d'identification. Maintenant, la soumission redirigera vers l'URL de redirection avec les noms de champ et les valeurs soumis précédemment. Voici comment la TextArea apparaît:

Une introduction à l'API du système de fichiers WordPress

Ici, nous lisons le contenu du fichier et l'avons affiché.

Autres méthodes de l'objet $ wp_filesystem

L'objet $ wp_filesystem fournit de nombreuses autres méthodes pour effectuer diverses autres opérations sur les fichiers et les répertoires. Nous venons de voir l'écriture et la lecture du fichier n. Vous pouvez trouver la liste complète de ce que vous pouvez faire sur la page de documentation WP_FileSystem_base ().

Voyons certains des importants:

  • $ wp_filesystem-> supprimer: Delete est utilisé pour supprimer un fichier ou un répertoire. Vous devez passer une chaîne représentant le chemin.
  • $ wp_filesystem-> mkdir: mkdir est utilisé pour créer un répertoire. Il faut une chaîne représentant le répertoire parent.
  • $ wp_filesystem-> Déplacement: le mouvement est utilisé pour déplacer le fichier Il prend deux paramètres, c'est-à-dire, le premier est le chemin du fichier et le deuxième est le répertoire où le déplacer.
  • $ wp_filesystem-> taille: la taille renvoie la taille d'un fichier en octets. Vous devez passer le chemin d'un fichier.
  • $ wp_filesystem-> chmod: chmod est utilisé pour modifier les autorisations d'un fichier. Il faut trois arguments, c'est-à-dire le chemin du fichier, le numéro octal d'autorisation et le booléen représentant la récursivité.

Vous pouvez trouver la méthode de connexion utilisée par WordPress pour accéder au système de fichiers à l'aide de $ wp_filesystem-> Propriété publique de méthode.

Stockage des informations d'identification en permanence

Nous avons vu que WordPress ne stocke pas les références FTP ou SSH en permanence. Il n'est pas convivial de demander des détails encore et encore. Il existe un moyen de stocker les informations d'identification en permanence à l'aide du fichier WP-Config.php.

Utilisez ces options pour stocker les informations d'identification FTP et SSH:

  • ftp_host: le nom d'hôte du serveur.
  • ftp_user: le nom d'utilisateur à utiliser lors de la connexion.
  • ftp_pass: le mot de passe à utiliser lors de la connexion
  • ftp_pubkey: le chemin de la clé publique qui sera utilisé lors de l'utilisation de la connexion SSH2.
  • ftp_prikey: le chemin de la clé privée qui sera utilisé lors de l'utilisation de la connexion SSH2.

Conclusion

Dans cet article, nous avons vu le processus de conception d'une page d'administration qui accède à notre système de fichiers à l'aide de l'API du système de fichiers WordPress. Dans le cas où vous essayez d'accéder à un système de fichiers dans un processus d'arrière-plan (comme l'utilisation d'un travail CRON), il n'est pas possible d'afficher le formulaire d'identification si nécessaire, dans ce cas, vous devrez vous assurer que vous en informez votre utilisateur Pour placer les constantes d'identification dans le fichier wp-config.php. Vous pouvez aller de l'avant et expérimenter davantage cette API et partager vos expériences avec nous ci-dessous.

Questions fréquemment posées (FAQ) sur l'API du système de fichiers WordPress

Quelle est l'API WordPress FileSystem et pourquoi est-elle importante?

L'API du système de fichiers WordPress est un ensemble de fonctions fournies par WordPress qui permet aux développeurs de lire, d'écrire et de modifier les fichiers et les répertoires de manière standardisée . Il est important car il fournit un moyen sécurisé et fiable d'interagir avec le système de fichiers sur votre serveur. Ceci est crucial pour les tâches telles que la création, la modification ou la suppression des fichiers et répertoires, du téléchargement de fichiers multimédias ou de la mise à jour de votre installation WordPress.

L'API fonctionne en fournissant un ensemble de fonctions que vous pouvez utiliser pour interagir avec le système de fichiers sur votre serveur. Ces fonctions résument les opérations du système de fichiers sous-jacentes, fournissant une interface cohérente quel que soit le système d'exploitation ou le système de fichiers du serveur. Cela signifie que vous pouvez utiliser les mêmes fonctions pour interagir avec le système de fichiers sur un serveur Linux que vous le feriez sur un serveur Windows.

Comment puis-je utiliser l'API WordPress FileSystem dans mes propres plugins ou thèmes?

Pour utiliser l'API WordPress FileSystem dans vos propres plugins ou thèmes, vous devez d'abord inclure le fichier 'wp-admin / include / file.php' qui contient les fonctions de l'API. Après cela, vous pouvez utiliser les fonctions de l'API pour interagir avec le système de fichiers. Par exemple, vous pouvez utiliser la fonction 'wp_filesystem ()' pour initialiser le système de fichiers, puis utiliser d'autres fonctions telles que 'get_contents ()', 'put_contents ()', ou 'delete ()' pour lire, écrire ou ou supprimer les fichiers.

Quels sont les avantages de l'utilisation de l'API de système de fichiers WordPress sur les fonctions traditionnelles du système de fichiers PHP?

Le principal avantage de l'utilisation de l'API de système de fichiers WordPress sur les fonctions traditionnelles du système de fichiers PHP est que l'API fournit une interface cohérente, quelle que soit du système d'exploitation ou du système de fichiers du serveur. Cela signifie que vous pouvez écrire du code qui fonctionne sur n'importe quel serveur, sans avoir à vous soucier des différences entre les différents systèmes de fichiers. De plus, l'API fournit un niveau de sécurité plus élevé en s'assurant que toutes les opérations de fichiers sont effectuées avec les autorisations correctes.

Puis-je utiliser l'API WordPress FileSystem pour télécharger des fichiers?

Oui, vous pouvez Utilisez l'API WordPress FileSystem pour télécharger des fichiers. L'API fournit une fonction appelée «wp_handle_upload ()» qui gère l'intégralité du processus de téléchargement, y compris la vérification du type de fichier, en s'assurant que le fichier n'est pas trop grand et en déplaçant le fichier vers le répertoire correct. Cela facilite la gestion des téléchargements de fichiers de manière sécurisée et fiable.

Comment puis-je gérer les erreurs lors de l'utilisation de l'API de fichier WordPress?

L'API de fichiers WordPress fournit une fonction appelée 'IS_WP_ERROR ( ) «que vous pouvez utiliser pour vérifier si une fonction a renvoyé une erreur. Si une erreur s'est produite, vous pouvez utiliser la fonction «get_error_message ()» pour obtenir un message d'erreur lisible par l'homme. Cela permet de gérer facilement les erreurs et de fournir des commentaires utiles à l'utilisateur.

Puis-je utiliser l'API WordPress FileSystem pour modifier le fichier .htaccess?

Oui, vous pouvez utiliser l'API WordPress FileSystem API? Pour modifier le fichier .htaccess. L'API fournit une fonction appelée «insert_with_markers ()» qui vous permet d'insérer des lignes dans le fichier .htaccess entre des marqueurs spécifiques. Cela facilite l'ajout de règles personnalisées au fichier .htaccess de manière sûre et fiable.

L'API du système de fichiers WordPress est-elle sécurisée?

Oui, l'API de fichiers WordPress est sécurisé. Il garantit que toutes les opérations de fichiers sont effectuées avec les autorisations correctes, et il fournit des fonctions pour désinfecter les noms de fichiers et les chemins. Cela aide à prévenir les problèmes de sécurité communs tels que les attaques de traversée de répertoires.

Puis-je utiliser l'API WordPress FileSystem pour créer des répertoires?

Oui, vous pouvez utiliser l'API WordPress FileSystem pour créer des répertoires. L'API fournit une fonction appelée «wp_mkdir_p ()» qui crée un répertoire et tous les répertoires parentaux nécessaires. Cela facilite la création de structures de répertoires complexes de manière fiable.

Puis-je utiliser l'API WordPress FileSystem pour supprimer les fichiers et les répertoires?

Oui, vous pouvez utiliser l'API WordPress FileSystem pour supprimer fichiers et répertoires. L'API fournit une fonction appelée «Delete ()» qui peut supprimer à la fois les fichiers et les répertoires. Cela facilite le nettoyage après vous-même et s'assure que votre plugin ou votre thème ne laisse pas des fichiers inutiles sur le serveur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal