WordPress est, à la base, un outil de blogging. Il a évolué au fil du temps pour devenir de plus en plus complet et flexible. Seulement voila, il nous arrive de plus en plus d’avoir des demandes spécifiques de nos clients. Je m’explique. Vous possédez peut être des outils greffés actuellement sur votre site et vous souhaitez les ajouter au nouveau site (WordPress). Ils sont spécifiques et pas du tout adaptés à WordPress (gestion d’une base client, gestion d’une base de produits liée à l’activité mais pas au site, etc.). Peu importe la raison, vous devez alors ajouter cette fonction à WordPress, voici comment procéder.
Dans un premier temps, créez votre fichier php, disons script-perso.php avec le code suivant :
<?php require_once('admin.php'); include_once('./admin-header.php'); ?> <div class="wrap nosubsub"> <?php screen_icon('edit'); ?> <h2><?php echo esc_html($title); ?></h2> <br /> <?php echo "Ceci est mon script perso."; ?> </div> <?php include('./admin-footer.php');
Il y a plusieurs points à noter :
- la dernière balise PHP ne doit pas être fermée
- vous devez inclure les header et footer de l’admin pour éviter d’avoir une page dénuée de navigation
Le fichier est à placer dans le dossier /wp-admin de WordPress.
La seconde étape consiste à modifier le fichier functions.php de votre thème. Ajoutez simplement le code suivant :
add_action('admin_menu', 'add_links_menu'); function add_links_menu() { add_menu_page('Script Test', 'Script Perso', 'administrator', 'script-perso.php', '', 'images/marker.png', 50); }
Le premier paramètre est le titre de la page une fois avoir cliqué sur l’onglet de votre script, le deuxième est le nom du l’onglet (sur la gauche de l’admin), le 3ème est le type d’utilisateur qui peut voir l’onglet, le 4ème est le nom du fichier php, le 5ème n’est pas important, le 6ème et l’url du logo (nous avons utilisé une image déjà présente dans l’installation de WordPress par défaut) et le dernier est la position du nouveau script (nous avons utilisé la position 50 pour l’afficher en dernier dans la liste).
Petite précision : avec l’exemple ci-dessus, le script est à placer dans wp-admin. Ce n’est pas forcément l’idéal si vous souhaitez vendre votre thème par exemple. Si vous souhaitez placer le /script-perso.php dans le dossier de votre thème (donc dans /wp-content/themes/NOMDUTHEME/script-perso.php), je vous conseille d’utiliser le code ci-dessous :
add_action('admin_menu', 'add_links_menu'); function add_links_menu() { add_menu_page('Nom du script', 'Nom du menu', 'administrator', 'script-perso', 'page_gen', 'images/marker.png', 50); } function page_gen() { include('script-perso.php'); }
18 Comments on “Ajouter un onglet dans l’admin de WordPress”
Tuto très intéressant et très facile, aussi facile que la customisation avec WordPress. Il n’y a pas à dire, lorsqu’il s’agit de customiser le backoffice de WordPress, c’est vraiment simple. Surtout comparé à d’autres CMS équivalent.
Merci pour cette astuce, ça permet de personnaliser comme on le souhaite c’est cool !!
Encore merci :)
Merci pour le tuto franchement, il solutionne nombre de mes problèmes
Yves
Bonjour,
Le tuto fonctionne très bien… Jusqu’à ce que je veuille récupérer des données en $_GET, du genre :
script-perso.php?page=page1
avec un include($_GET[‘page’].’.php’);
Il me refoule en me disant que je n’ai pas les droits…
Une idée ?
Le paramètre ‘page’ est un paramètre utilisé par WordPress pour charger des modules / pages au sein de l’admin. C’est la raison pour laquelle il vous est interdit de la réutiliser.
Essayez avec une autre variable…
Bonjour,
Existe-t-il la même chose pour le front end ?
Merci encore…
Bonjour,
Vous parlez de la barre horizontale noire qui s’affiche en haut du site si vous êtes connecté à l’admin ?
Si c’est le cas, vous trouverez un bon tuto ici : http://sumtips.com/2011/03/customize-wordpress-admin-bar.html
Bonjour Jérôme,
Non, je souhaite que ce soit accessible à tous les visiteurs, faire exactement la même chose qu’une Page WordPress. Sauf que les pages « classiques » sont statiques, et moi j’aimerais qu’elles soient dynamiques, et aillent chercher des infos dans MES tables, et non celles de wp…
Je ne sais pas s’il existe un Widget de ce type, je ne sais pas non plus s’il est possible de modifier le function.php du thème, comme pour l’astuce citée dans l’article…
On m’a déjà dit de faire un shortcode, ou un appel de fonction… Mais je ne connais pas encore assez bien WordPress pour savoir ce à quoi cela correspond ^^
Merci.
Dans ce cas, en PHP pur.
Tu n’as pas vraiment besoin des fonctions du Back Office de WordPress pour faire ça.
Les shortcodes vont te permettre de faire appel à une fonction spécifique en une ligne dans ton thème, par exemple :
Cela se passe effectivement dans le functions.php : http://www.wpbeginner.com/wp-tutorials/how-to-add-a-shortcode-in-wordpress/
Pour faire simple, j’irais même jusqu’à faire une condition sur url :
– tu créés des pages WordPress
– tu fais une conditions sur url en php
– tu exécutes ton code PHP pur
Pas besoin de s’embêter avec les fonctions de WordPress.
Tu peux même utiliser des templates de pages différents pour faire ‘plus propre’ histoire d’avoir tes fonctions php maison dans un fichier php qui leur est propre.
Bonjour, j’ai fait simplement tout ce que vous dites dans votre tuto mais juste apre le passage de fonctions.php, je copie collé votre code, et HOP ! Erreur Fonctions line 569 etc. etc…
Merci d’avance.
Edit : Enfaite c’est bon^^, un « ?> » était en trop ! Merci du tuto !
Bonjour,
Quelle est l’erreur exacte ?
Je vous conseille de vérifier la syntaxe.
Il n’y a que 3 lignes à ajouter dans le functions.php
Je viens de tester avec la version 3.4.1 sans soucis particuliers.
Par hasard, tu ne sais pas comment le rendre visible à tous les users ?
Tu peux supprimer administrator (le 3ème paramètre). Ça devrait alors fonctionner pour tout le monde. Sinon, tu peux encore le remplacer par Super Admin, Editor, Author, Contributor ou Subscriber pour ne l’afficher que pour certaines personnes.
Tu trouvera plus d’informations sur la fonction add_menu_page() ici : http://codex.wordpress.org/Function_Reference/add_menu_page
Bonjour,
« add_menu_page(‘Script Test’, ‘Script Perso’, ‘administrator’, ‘script-perso.php’, », ‘images/marker.png’, 50); »
Vous indiquez que le fichier (script_perso.php) est à placer dans le dossier /wp-admin de WordPress.
Que mettre si je souhaite le placer ailleurs, par exemple dans « wp-content/themes/montheme » ?
Le codex lui parle de « myplugin/myplugin-index.php » qui suggère que WP ira chercher tout seul dans les plugins alors qu’à la lecture de votre tuto il va chercher dans « /wp-admin »
Merci pour ce tuto ;) je suis en train de faire un peu le tour des tutos qui expliquent comment ajouter un menu dans l’admin WP, sans grand succès pour le moment, il manque souvent des informations.
Lomic
J’ai testé de prime abord avec le fichier script_perso.php dans /wp-admin et ajouté la partie de code dans functions.php de mon thème mais mon interface d’admin ne change pas.
Faut-il faire quelque chose de particulier pour que ces modifs soient prises en compte par WordPress?
Merci.
Bonjour,
Je présume que vous faites référence à cette page : http://codex.wordpress.org/Function_Reference/add_menu_page
Dans leur exemple, myplugin est un dossier créé dans wp-admin car ils ne font pas appel à une fonction de ‘callback’. Je viens d’ajouter une fonction à l’article qui devrait vous aider.
Merci!
Bon coup de main… c’est ce qui est génial avec ce CMS!
Merci beaucoup !! J’ai mis bien longtemps à trouver un exemple qui soit aussi simple sans avoir à créer un plugin.