consentire agli editor di modificare i menu?


46

Vorrei poter concedere ai miei redattori il potere di modificare il menu, è possibile farlo?

La scheda Aspetto non sembra essere affatto un'opzione, posso farlo?

Risposte:


53

aggiungi questo al tema functions.php:

// add editor the privilege to edit theme

// get the the role object
$role_object = get_role( 'editor' );

// add $cap capability to this role object
$role_object->add_cap( 'edit_theme_options' );

1
get_role è una classe?
Morbido Fuzz,

4
@Mild Fuzz - di per sé no, ma restituisce un'istanza diWP_Role
TheDeadMedic

8
Probabilmente non dovresti farlo su ogni richiesta, poiché ciò causa una scrittura db per quanto ho capito. Meglio admin_inite soloif !$role_object->has_cap('edit_theme_options')
jsphpl

Questa impostazione viene salvata nel database (nella tabella wp_options, nel campo wp_user_roles), quindi potrebbe essere meglio eseguirlo sull'attivazione di temi / plugin. Vedi codex.wordpress.org/Function_Reference/add_cap
Pim Schaaf

Oppure potresti aggiungerlo a
Functions.php

18

EDIT: aggiornamento per WP 4.9 e nasconde solo le voci di menu per Editor

Se vuoi che i tuoi utenti siano in grado di cambiare il menu di navigazione, ma non le altre opzioni in apparenza: usa questo

// Do this only once. Can go anywhere inside your functions.php file
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );

È possibile commentare l'intero codice dopo aver aggiornato il pannello di amministrazione, poiché il codice sopra apporterà modifiche permanenti al database.

Ora hai tutte le opzioni sotto l'aspetto visibili agli editori. Puoi nascondere le altre opzioni in questo modo:

function hide_menu() {

    if (current_user_can('editor')) {

        remove_submenu_page( 'themes.php', 'themes.php' ); // hide the theme selection submenu
        remove_submenu_page( 'themes.php', 'widgets.php' ); // hide the widgets submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php' ); // hide the customizer submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php&autofocus%5Bcontrol%5D=background_image' ); // hide the background submenu


        // these are theme-specific. Can have other names or simply not exist in your current theme.
        remove_submenu_page( 'themes.php', 'yiw_panel' );
        remove_submenu_page( 'themes.php', 'custom-header' );
        remove_submenu_page( 'themes.php', 'custom-background' );
    }
}

add_action('admin_head', 'hide_menu');

Le ultime 3 righe della hide_menu()funzione sono specifiche del tema per il mio tema. Puoi trovare il secondo parametro facendo clic sul sottomenu che vuoi nascondere, nel pannello di amministrazione. Il tuo URL sarà quindi simile a: example.com/wp-admin/themes.php?page= yiw_panel

Quindi, in questo esempio, sarà il secondo parametro per la remove_submenu_page()funzioneyiw_panel


1
questo nasconde temi ecc. anche per gli amministratori.
JorgeLuisBorges,

12

In WordPress 3.8, questo sarebbe un codice migliore della risposta attualmente accettata.

/**
 * @var $roleObject WP_Role
 */
$roleObject = get_role( 'editor' );
if (!$roleObject->has_cap( 'edit_theme_options' ) ) {
    $roleObject->add_cap( 'edit_theme_options' );
}

3

Quando guardo la struttura del menu di amministrazione, sembra che il nav-menus.phpcollegamento sia legato alla funzionalitàedit_theme_options . Puoi modificare il ruolo dell'editor per includere questa funzionalità? Ciò darebbe anche loro la possibilità di modificare i widget , non so se questo è un problema? Tutte le funzionalità del menu Ajax sono limitate da questa funzionalità, quindi la semplice modifica della funzionalità del menu di amministrazione per la modifica dei menu probabilmente non funzionerà.


3

Installa plug-in "User Role Editor" - Attiva edit_theme_options - Installa plug-in Amministra - disattiva "Widget" e "Cambia tema" per gli editor;)


0

Ho scoperto che il tuo menu funzionerà in questo modo: installa il plugin " User Role Editor " e lì puoi modificare le condizioni per il ruolo dell'editor e altro. Attiva edit_theme_options. Ma ora: vedrai l'opzione "menu" sotto "temi", "widget". Per me: dopo aver fatto clic su "menu" (come editor) non vedrei le opzioni piene ma vuote. Quindi disattiverei il plug-in "User Role Editor" e le opzioni riempite per "menu" vengono visualizzate correttamente. Si noti che la disattivazione del plug-in "User Role Editor" rimane le condizioni per l'editor attivo! Bene per me, forse ti aiuterà anche tu

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.