10
votes

Comment ajouter un nouveau sous-menu personnalisé dans un autre menu Plugins

Il y a un plugin appelé Shopp dans ma page d'administration WP, ce plugin a un menu de haut niveau "Shopp".

Ceci est le menu de niveau supérieur: strong> p>

function ach_faq_menu(){
 add_submenu_page('shopp-orders', 'My FAQ Plugin', 'My FAQ Plugin', 8, __FILE__, 'section_1');
}
function section_1(){
 echo 'Text';
}
add_action('admin_menu', 'ach_faq_menu');


0 commentaires

7 Réponses :


21
votes

menu et pages de sous-menus doivent être appelés en même temps et utiliser les mêmes limaces. Par exemple xxx

Ceci entraînerait un menu de haut niveau "Mon menu" avec un enfant de "mon sous-menu".

L'erreur d'autorisations non valides semble décrire Lorsque vous utilisez Fichier pour le sous-menu-SLUG.


3 commentaires

Pourquoi n'est-ce pas dans la documentation? Il n'est pas évident que les pages sous-menus ont besoin de la même limace.


@TIMJOYCE, ils n'ont pas besoin de la même limace. Les sous-menus ont besoin de la limace parent. Si vous souhaitez un sous-menu par défaut, ce que je ne vois pas pourquoi vous ne le feriez pas, vous devez utiliser le même limège. Vous pouvez avoir une action si vous deviez cliquer sur le niveau supérieur différent de tout le SUBLEVEL, mais qui ajoute une confusion. La pratique standard est d'avoir un premier sous-menu partager la limace et son action remplacera l'action du parent.


J'ai suivi cet article pour créer un sous-menu dans le menu principal d'un plugin actif, si simple. développeur.wordpress.org/plugins/administration-menus/sub-men nous



0
votes

Vous pouvez en ajouter le nom du dossier du plugin et la page d'accueil du plugin. Par exemple, je suis accroché au plugin de la newsletter par: xxx


0 commentaires

0
votes

comme Altari a déclaré:

menu et pages sous-menus doivent être appelés en même temps

MÊME TIME - Add_SUBMENU_PAGE doit être appelé à partir de la même fonction que ADD_MENU_PAGE, la fonction dans le plugin d'origine. Vous ne peut pas "hack" dans un autre menu des plug-ins de l'extérieur.


0 commentaires

-6
votes

aller à l'apparence -> menus Ensuite, créez un menu sous Liens personnalisés, puis un nouveau menu créé à droite. Maintenant, vous pouvez simplement faire glisser cela et mettre sous quel menu de niveau supérieur que vous souhaitez.


1 commentaires

La question concerne le menu d'administration, pas les frontales.



2
votes

Vous pouvez ajouter un sous-menu au menu personnalisé existant (ajouté par un autre plugin) avec un peu délicat

Vous pouvez créer un menu, puis retirer le menu lui-même après avoir ajouté un sous-menu avec le même slug et le même rappel.

Veuillez essayer ce code: xxx


0 commentaires

0
votes
/*create any function name*/
function process_post() {

 add_menu_page(__('nLr','menu-test'), __('My Plugin','menu-test'), 'manage_options','myplugin', 'myplguin_admin_page', 'dashicons-tickets', 6 );

add_submenu_page('myplugin', __('My Plugin Edit', 'menu-test'), __('My Plugin Edit', 'menu-test'), 'manage_options', 'myplugin_edit', 'myplugin_edit');

 }
/*create callback function for main menu*/

function myplguin_admin_page(){
    echo"welcom to my plugin menu";

}

/* create callback function for submenu */

function myplugin_edit(){
    echo"welcome to submenu";
}
add_action( 'admin_init', 'process_post' );
?>

0 commentaires

2
votes

Pour l'ajouter sur l'un des menus parent du plug-in, utilisez add_submenu_page () et définissez la priorité de votre add_action () sur BAB inférieure, ci-dessus 10.

alors dans add_submenu_page (), remplacez 'plugin-parent-menu -slug 'avec la limace du menu parent où vous voulez qu'il ajoutera. Exemple, vous voulez l'ajouter sous une page d'administration avec une limace /wp-admin/admin.php?page=Plugin-parent-menu-slugleight/strong>.

// set priority to lower i.e. greater than 10
add_action( 'admin_menu', 'my_admin_menu', 20 );

function my_admin_menu() {
    add_submenu_page( 'plugin-parent-menu-slug', 'New Menu', 'New Menu', 'manage_options', 'my-admin-slug', 'my_admin_page' );
}

function my_admin_page(){
    echo "My Admin Page";
}


0 commentaires