web-dev-qa-db-fra.com

Comment ajouter une sous-page de paramètres depuis un plugin à une page de paramètres créée dans theme?

J'utilise add_menu_page (...) à partir d'un thème personnalisé et je souhaite ajouter des sous-pages à ce menu avec add_submenu_page (...) . Si j'essaie de le faire à partir du thème, cela fonctionne comme prévu, mais lorsque j'essaie la même chose à partir d'un plugin, cela ne fait rien.

Je pensais qu'il était possible que le plugin essaye d'ajouter la page de sous-menu avant même que le menu n'existe, alors j'ai intégré le code dans une fonction et utilisé add_action (...) depuis le plugin en utilisant un hook d’action personnalisé créé à l’endroit où je voulais que le code s’exécute (dans la ligne exacte dans laquelle le thème a fonctionné) avec do_action (...) .

L'exemple de code serait le suivant:

(thème)

function wvdh_add_admin_page(){
    // The next 2 lines work fine
    add_menu_page( 'WVDH - Settings','WVDH', 'manage_options', 'wdvh-startpoint', 'render_page', 'dashicons-admin-network', '109');
    add_submenu_page( 'wdvh-startpoint', 'page-title', 'menu-title', 'manage_options', 'menu-slug', 'render_page'  );
    // The next line does nothing
    do_action('wvdh-menu');
}
add_action('admin_menu', 'wvdh_add_admin_page');

function render_page(){
    echo '<h1>Test</h1>';
}

(brancher)

add_action('admin_menu', 'wvdh_create_menu');

function wvdh_create_menu() {
    add_action('wvdh-menu', 'new_subpage');
}

function new_subpage(){
    add_submenu_page( 'wvdh-startpoint', 'page-from-plugin', 'menu-from-plugin', 'manage_options', 'plugin-slug', 'wvdh_settings_page' );
}

function wvdh_settings_page() {
    echo '<h1>Test from-plugin</h1>';
}
1
Rubén Marrero

C'est juste une faute de frappe

Faux

//wvdh-startpoint
add_submenu_page( 'wvdh-startpoint', 'page-from-plugin', 'menu-from-plugin', 'manage_options', 'plugin-slug', 'wvdh_settings_page' );

Correct

//wdvh-startpoint
add_submenu_page( 'wdvh-startpoint', 'page-from-plugin', 'menu-from-plugin', 'manage_options', 'plugin-slug', 'wvdh_settings_page' );
2
Sumit