web-dev-qa-db-fra.com

Ajouter une page qui apparaît dans l’administrateur du backend avec la liste des fichiers à télécharger? WP 3.3

J'utilise actuellement WP 3.3.1.

En gros, je veux juste une page pour les utilisateurs qui se connectent via wp-login.php et qui voient le panneau d’administration du backend pour pouvoir voir une page contenant une liste de fichiers qu’ils peuvent télécharger.

  1. Les fichiers seront soit .Zip, .pdf ou .txt.
  2. Ce serait génial si la liste des téléchargements avait exactement le même format que lorsque vous visualisez les messages >> Tous les messages.
  3. Pour commencer, il n’a pas besoin de fonctionnalité de tri ou de filtrage. Bien que l'on serait gentil.

Pas exactement comment je vais télécharger les fichiers. Mais quelle que soit la voie qui faciliterait la tâche ci-dessus, cela ne me dérangerait pas.

Des astuces ou des extraits de code qui feraient ce qui précède ou me feraient démarrer dans la bonne direction seraient géniaux!

Merci d'avance.

2
Damainman

Ce processus comportera plusieurs étapes. Je vais en décrire quelques-unes pour vous aider à démarrer.

Étape 1: Configurer un plug-in

Vous pouvez voir plus d'informations à leur sujet ici . Je ne passerai pas en revue les informations d'en-tête dans cette réponse, car cet article est assez explicite et vos valeurs seront différentes.

Étape 2: Configurez votre activation et votre fonction

//run when admin menu is being created
add_action('admin_menu','my_files_plugin_menu');
//add the new item to the admin menu
function my_files_plugin_menu() {
     add_menu_page('Files','Files','editor','my-files-plugin','','',10);
     add_submenu_page('my-files-plugin','Download Files','Download Files','editor','my-files-plugin','my_files_plugin_download_page');
     add_submenu_page('my-files-plugin','Upload Files','Upload Files','administrator','my-files-upload','my_files_plugin_upload_page');
}

//run when plug-in is activated
register_activation_hook(__FILE__,'ballots_by_social_set_options');
//set up activation options for plug in
function my_file_upload_plug_in_activate() {
     //check to see if files directory has already been created
     //we check for the directory first so that if the plug-in is being reactivated
     //or updated, we won't bother trying to create the directory again
     if(!is_dir(ABSPATH . '/wp-content/files_plugin')) {
          //create directory
          mkdir(ABSPATH . '/wp-content/files_plugin',0755);
     }
}

J'ai utilisé le niveau utilisateur de l'éditeur pour la page de téléchargement et le niveau utilisateur de l'administrateur pour la page de téléchargement, mais vous pouvez les définir comme vous le souhaitez. Vous pouvez également ajouter une 3ème page avec Options et utiliser add_option () dans votre register_activation_hook() pour définir certains paramètres par défaut. Ensuite, vous voudrez utiliser update_option () et get_option () pour permettre le réglage des niveaux d'utilisateurs pouvant accéder aux pages. Si vous décidez de le faire, assurez-vous de configurer un register_deactivation_hook () où vous utilisez delete_option () pour les supprimer.

Étape 3: Configurez votre fonction de désinstallation

Je recommande de placer ceci dans un fichier unstall.php dans votre répertoire de plug-ins. Cela garantira que lorsque quelqu'un cliquera sur le lien Supprimer du plug-in, il supprimera le répertoire et tout son contenu. Si vous configurez des sous-répertoires dans le répertoire principal pour différents types de fichiers, vous pouvez également modifier la fonction pour les supprimer.

//remove /wp-content/files_plugin/
$dir = ABSPATH . '/wp-content/files_plugin';
chmod($dir,0777);
function remove_files_plugin_dir($dir) {
     //see if directory exists
     if(is_dir($dir)) {
     //open directory
     $handle = opendir($dir);
     //iterate through objects in directory and remove them
     while($obj = readdir($handle)) {
          if($obj != "." && $obj != '..') {
               if(!unlink($dir . $obj)) {
                    break;
               } 
          }
     }
     closedir($handle);
     rmdir($dir);
}
//run remove directory function
remove_files_plugin_dir($dir);

Étape 4: Configurez votre page de téléchargements

Vous voudrez configurer une simple page avec une entrée de fichier et un bouton de téléchargement. Vous pouvez configurer le formulaire pour accepter plusieurs fichiers si vous le souhaitez. Vous voudrez faire référence au tableau $_FILES et écrire le fichier téléchargé dans votre nouveau répertoire/wp-content/files_plugin /.

Étape 5: Configurez votre page de téléchargement

C'est à peu près à la façon dont vous souhaitez le faire. Vous pouvez facilement ouvrir le répertoire et parcourir les fichiers, un peu comme la fonction de désinstallation, puis les afficher sur la page.

Ou vous pouvez utiliser quelque chose comme l’arborescence de fichiers jQuery pour présenter un navigateur de fichiers à vos utilisateurs.

EDIT 2 : J'avais terriblement tort au sujet de la manière de le faire apparaître comme la page des messages. Il semble que vous puissiez utiliser la classe WP_List_Table pour y parvenir d'une bien meilleure façon. Je n'ai aucune expérience avec cette classe, mais ça a l'air très chic.

Je viens de configurer la sortie pour refléter les tables de zones d'administration typiques en termes de structure et de classes. J'utiliserai certainement WP_List_Table à partir de maintenant, cependant.

Étape 6: Configurer une fonction de suppression

Vous voudrez probablement avoir un lien spécifique à chaque fichier que seuls les administrateurs peuvent voir, ce qui vous permet de supprimer le fichier.

Vous voudrez peut-être le configurer comme un appel Ajax à une fonction de suppression, en lui envoyant le nom du fichier en tant que paramètre, puis utilisez la fonction unlink(), comme nous l'avons fait dans la fonction de désinstallation pour supprimer ce fichier.

Évidemment, vous voudrez peut-être modifier l’un quelconque de ces codes en fonction de vos besoins, mais cela devrait vous fournir un bon point de départ.

Et n'oubliez pas que vous pouvez également utiliser une table dans la base de données pour contrôler tout cela, mais vous devez toujours ajouter et supprimer les fichiers réels et simplement stocker les noms de fichiers dans la base de données.

Si vous avez besoin d'aide ou avez des questions, envoyez-les en retour et j'essaierai de vous aider.

3
Eric Allen

Je cherchais un autre argument mais je suis tombé sur ce sujet. Même si c'est assez vieux, je voudrais souligner qu'il y a probablement plus de choses que vous pouvez faire pour accomplir votre tâche.

Si j'étais vous, pour le téléchargement, j'aurais créé un type de message personnalisé avec les métaboxes appropriées ( wpalchemy ici).

Ensuite, pour le téléchargement, cela dépend de ce dont vous avez vraiment besoin. Si vous avez vraiment besoin d'afficher la liste DANS la zone d'administration, WP_List_Table est le moyen (et cochez ici ). Sinon, je pense que vous pourriez configurer une page d’archive générique de type post personnalisé, puis la lier au profil utilisateur ou à la capacité correspondante.

J'espère que ça aidera un autre gars dans le futur.

0
Luca Reghellin