68 votes

Comment ajouter une page d'administrateur WordPress sans l'ajouter au menu?

Je construis un plugin WordPress et j'aimerais avoir une page d'édition qui ne puisse pas être atteinte via le sous-menu (car, dans ce cas, l'élément ne serait pas spécifié).

Cette ressource (http://codex.wordpress.org/Adding_Administration_Menus) montre comment associer une page d'administration à une fonction, mais pas comment le faire sans l'ajouter en tant qu'élément de menu.

Cela peut-il être fait?

Merci!

82voto

Christof Coetzee Points 341

La meilleure solution ici http://wordpress.org/support/topic/add-backend-page-without-menu-item utilisez add_submenu_page avec le parent slug = null

19voto

John P Bloch Points 3030

Oui, cela peut être fait (enfin, techniquement, il serait plus comme l'enregistrement de l'ensemble de la chose et de retrait de l'élément de menu plus tard), mais Ce serait plus simple (je pense) pour vérifier les paramètres dans l' $_GET super-globale pour indiquer que l'utilisateur souhaite modifier un élément spécifique.

Par exemple, vous pourriez avoir une page qui contient une liste d'éléments à modifier, et en cliquant sur "modifier" ajoute l'élément d'ID de l'URL courante(la chaîne de la requête).

Dans la fonction qui affiche cette page, si l'ID est défini, leur donner de la page pour modifier cet élément.

Sinon, donnez-leur de la vue de liste. C'est la façon dont les articles, pages, et d'autres types de poste personnalisés de le faire.

10voto

SiD Points 253

add_submenu_page avec le parent slug = null

OU

add_submenu_page avec titre de menu = null

6voto

J.D. Points 226

À partir des réponses qui viennent devant moi, vous pouvez voir qu'il ya beaucoup de façons de le faire. Cependant, il est une autre façon que je pense que peut-être la meilleure.

Le chargement de la page différemment, en fonction de la valeur d'un $_GET de la requête var est une option, mais il peut ne pas être ce que certaines personnes sont à la recherche pour.

Les suggestions concernant le add_submenu_page() sont sur la bonne voie, mais toutes les suggestions précédentes ont des problèmes. Paramètre $menu_title de null permet de ne pas garder l'élément de menu s'affiche, ça fait donc le lien n'est pas n'importe quel texte. Le lien encore prend de la place dans le menu, donc ça a l'air drôle. Réglage de l' $parent_slug de null n'ont pas ce problème, mais j'ai remarqué que la page HTML title n'affiche pas l' $page_title de texte.

Ma solution a été de fixer $parent_slug d'un faux menu slug, comme 'i_dont_exist'. L'élément de menu ne s'affiche pas, et lors de l'affichage de l'écran admin le titre de la page doit être remplie correctement.

add_submenu_page(
    '_doesnt_exist'
    ,__( 'Page title', 'textdomain' )
    ,''
    ,'manage_options'
    ,'menu_slug'
    ,'display_my_menu'
);

4voto

Wind Shear Points 966

Oui. Il est très possible de rendre une page inaccessible via le sous-menu, voire le menu principal du panneau d'administration WP. Voir l'extrait de code ci-dessous.

 function myplugin_render_edit_page() {
    // Code contains the UI for edit page.
}

/**
 * Manage menu items and pages.
 */
function myplugin_register_admin_page() {
    global $_registered_pages;

    $menu_slug = plugin_basename('myplugin.php');
    $hookname = get_plugin_page_hookname($menu_slug,'');
    if (!empty($hookname)) {
        add_action($hookname, 'myplugin_render_edit_page');
    }
    $_registered_pages[$hookname] = true;
}
add_action('admin_menu', 'myplugin_register_admin_page');
 

Espérons que cela aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X