Ajouter un onglet dans l’admin de WordPress

JérômeProgrammation18 Commentaires

admin-wp

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).

 

ajouter onglet wordpress

 

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');
}
Détection avancée des mobiles en PHP
Bookmarklets SEO en Javascript

18 commentaires sur “Ajouter un onglet dans l’admin de WordPress”

  1. Tony

    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.

  2. Fred

    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 ?

    1. Jérôme

      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…

      1. Fred

        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.

      2. Jérôme

        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 : < ?php echo do_shortcode("[example_shortcode]"); ?>
        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.

  3. Maxence

    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 !

    1. Jérôme

      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.

  4. Lomic

    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

    1. 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.

  5. Julien

    Merci beaucoup !! J’ai mis bien longtemps à trouver un exemple qui soit aussi simple sans avoir à créer un plugin.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *