Menu’s aanpassen door klant – redacteur

Zelf ben ik een voorstander van zo simpel mogelijke achterkanten voor de klant. Daarom verstop ik standaard heel veel dat ze niet nodig hebben.

Hoe je menu-item’s aan de achterzijde verstopt voor rollen lager dan beheerder lees je hier: www.wpbieb.nl/snippets/verwijder-menu-items-achterzijde-voor-anderen-dan-beheerder/

Een klant toegang geven tot het menu, zonder dat hij/zij overbodige dingen ziet is wat ingewikkelder.

Eerst geef je de editor toegang tot ‘weergave’. En vervolgens geef je editors GEEN toegang tot themes en widgets. Met dank aan: http://sethstevenson.net/customize-the-wordpress-admin-menu-based-on-user-roles/

[code]

//geef editor toegang tot weergave
$role_object = get_role( ‘editor’ );
$role_object->add_cap( ‘edit_theme_options’ );

// editor niet themes en widgets
add_action( ‘admin_init’, ‘my_remove_menu_pages’ );
function my_remove_menu_pages() {
// als de gebruik geen nieuwe gebruikers kan toevoegen
if(!current_user_can(‘add_users’)) {
// verwijder themes en widgets onder weergave
remove_submenu_page( ‘themes.php’, ‘themes.php’ );
remove_submenu_page( ‘themes.php’, ‘widgets.php’ );
}
}

[/code]

Als je bovenstaande code hebt gebruikt, en je werkt met een Genesis-childtheme, dan zie je nu ook het Genesis-menu-item. Ook dat wil ik liever verstoppen voor een klant.

[code]
// verwijder genesis-menu voor editor en lager
if( (!current_user_can(‘install_themes’)) ) {
remove_theme_support( ‘genesis-admin-menu’ );
}
[/code]

Omdat in het submenu van “Weergave” toch nog twee items bleven staan ben ik verder gaan zoeken (3 maart 2015) en vond deze code die is aangepast voor WP4.0 en  4.1:  http://stackoverflow.com/questions/25788511/remove-submenu-page-customize-php-in-wordpress-4-0

[code]
function remove_customize() {
$customize_url_arr = array();
$customize_url_arr[] = ‘customize.php’; // 3.x
$customize_url = add_query_arg( ‘return’, urlencode( wp_unslash( $_SERVER[‘REQUEST_URI’] ) ), ‘customize.php’ );
$customize_url_arr[] = $customize_url; // 4.0 & 4.1
if ( current_theme_supports( ‘custom-header’ ) && current_user_can( ‘customize’) ) {
$customize_url_arr[] = add_query_arg( ‘autofocus[control]’, ‘header_image’, $customize_url ); // 4.1
$customize_url_arr[] = ‘custom-header’; // 4.0
}
if ( current_theme_supports( ‘custom-background’ ) && current_user_can( ‘customize’) ) {
$customize_url_arr[] = add_query_arg( ‘autofocus[control]’, ‘background_image’, $customize_url ); // 4.1
$customize_url_arr[] = ‘custom-background’; // 4.0
}
foreach ( $customize_url_arr as $customize_url ) {
remove_submenu_page( ‘themes.php’, $customize_url );
}
}
add_action( ‘admin_menu’, ‘remove_customize’, 999 );
[/code]

Succes met versimpelen!

 

Comments

  1. Winy Schalke schreef dit

    Hoi Corine, ik wilde iets dergelijks, maar dan dat de klant alleen de widgets kan aanpassen, niet de menu’s. Mijn oplossing daarvoor vind je hier: Widgets aanpassen door klant – redacteur

  2. Bijgewerkt op 2 juni 2014

  3. Nog eens goed naar de code gekeken want het haalde niet alles weg wat ik wilde. Steeds bleef “aanpassen” en “achtergrond” staan als submenu onder “Weergave”.
    Het is natuurlijk mogelijk om een plugin als adminmenueditor.com te installeren. Maar ik heb toch nog even verder gepuzzeld en kwam dit tegen: http://stackoverflow.com/questions/25788511/remove-submenu-page-customize-php-in-wordpress-4-0
    Ik zal de blog hierboven aanpassen.

Wil je reageren?

Graag!
Je kunt hier een berichtje achterlaten. Het is noodzakelijk daarvoor je naam en emailadres in te vullen. Het emailadres zal nooit openbaar worden gemaakt.
Na goedkeuring door WP-bieb zal je bericht op de website verschijnen.

*