2010-05-12 4 views
8

J'ai déjà développé mon plugin pour WordPress et je peux le gérer depuis admin. J'ai passé l'accès au fichier de plugin en utilisant add_submenu_page. Le problème est que le plugin s'étend et je veux utiliser un autre fichier qui est lié à partir du fichier principal. Par exemple, j'ai second_page.php?id=3. Lorsque j'essaie d'accéder à ce lien, je reçois unWordPress ajouter une nouvelle page à la section admin

Vous n'avez pas les permissions suffisantes pour accéder à cette page.

message. Je veux "valider" cette page aussi pour l'utiliser avec ce script et je ne sais pas comment. Des idées?

Répondre

3

Comme WP supporte nativement les URL comme wp-admin/admin.php?page=<your_page_handle> vous pouvez faire des sous-pages avec quelque chose comme:

wp-admin/admin.php?page=yourpage

wp-admin/admin.php?page=yourpage&sub=2

wp-admin/admin.php?page=yourpage&sub=3

Ensuite, dans le code qui gère wp-admin/admin.php?page=<your_page_handle> vous suffit de regarder le $ _GET et tirez la page principale ou une sous-page au besoin.

J'ai certainement vu des plugins où la page d'administration a une petite rangée de liens en haut reliant les différentes sous-pages.

5

Lorsque vous ajoutez une page avec add_submenu_page(), l'URL doit être quelque chose comme:

wp-admin/admin.php?page=<your_page_handle>

Votre page est effectivement chargée de admin.php (en général). Vous pouvez ajouter des paramètres à vos liens en ajoutant quelque chose comme &id=3, puis demandez à votre logique de chargement de page de plugin principal de déterminer quel fichier inclure en fonction du paramètre.

Par exemple

if (isset($_GET['id']) && ((int) $_GET['id']) == 3) { 
    include 'second_page.php'; 
} else { 
    include 'first_page.php'; 
} 

Edit:

J'ai trouvé une astuce qui peut être plus facile pour vous, mais je ne l'ai pas testé à fond il. Disons que vous avez deux pages: my_one et my_two. Appelez simplement add_submenu_page deux fois et définissez le parent de la deuxième page comme première page. Cela entraînera Wordpress à ne pas ajouter un lien vers la barre de navigation, mais vous pouvez toujours accéder à votre page en accédant à admin.php?page=my_two.

Exemple:

add_submenu_page( 
      'my_toplevel_link' 
     , 'Page Title' 
     , 'Link Name' 
     , 'administrator' 
     , 'my_one' // here's the page handle for page one 
     , 'my_one_callback' 
    ); 
    add_submenu_page( 
      'my_one' // set the parent to your first page and it wont appear 
     , 'Page Title' 
     , 'Link Name' // unused 
     , 'administrator' 
     , 'my_two' 
     , 'my_two_callback' 
    ); 
+0

Eh bien, je sais comment inclure une page comme page.php, qu'en est-il de page.php? Id = 3? Cela change tout et je ne sais pas comment le faire. –

+0

J'ai ajouté une méthode différente qui peut fonctionner pour vous. –

+0

5 ans plus tard, et cette réponse est toujours utile. Cependant @FletcherMoore savez-vous comment je peux faire en sorte que 'my_toplevel_link' reste toujours sélectionné comme le menu ** main **? –

Questions connexes