web-dev-qa-db-fra.com

Rendez nav-menus.php disponible pour l'éditeur

J'ai supprimé le menu "Apparence" de la barre latérale d'administration:

function clean_menu() {
       remove_menu_page( 'themes.php' ); 
}
add_action('admin_menu','clean_menu');

Ensuite, j'ai ajouté le nav-menu.php manuellement en tant que parent dans la barre latérale:

function menu_reorder($menu_ord) {
    if (!$menu_ord) return true;

    return array(
        ...,
        'nav-menus.php',
        ...
    );
}
add_filter('custom_menu_order', 'menu_reorder'); 
add_filter('menu_order', 'menu_reorder');

Cela fonctionne très bien en tant qu'administrateur, mais lorsque je me connecte en tant qu'éditeur, je ne suis pas autorisé à accéder à nav-menu.php, même si j'ai activé les fonctionnalités requises:

function manage_users() {
    if ( get_option( 'add_cap_editor_once' ) != 'done' ) {

        $edit_editor = get_role('editor');

        $edit_editor->add_cap('edit_themes');
        $edit_editor->add_cap('edit_theme_options');

        update_option( 'add_cap_editor_once', 'done' );
    }
}
add_action( 'init', 'manage_users' );

Des idées pourquoi ceci ne fonctionne pas??

1
jDelforge

D'accord maintenant je comprend :

Il y avait quelque chose qui n'allait pas à cause des manipulations précédentes.

add_cap signifie modifier la base de données , si bien que j'avais écrit sur d'autres fonctionnalités. et il a cassé le résultat recherché.

J'ai donc nettoyé le rôle en utilisant quelques-uns remove_cap, remettez mes fonctions en place et le tour est joué!

0
jDelforge