Jak zobrazit WordPress administraci pouze pro administrátory

Pro zamezení přístupu registrovaných uživatelů do administrace, ať z jakéhokoliv důvodu, existuje řada pluginů. Pokud však potřebujete podobnou funkci zakomponovat do šablony, nebo nemůžete použít plugin, pomůžou vám  dvě jednoduché funkce, které vložíte do souboru functions.php

Nejprve skryjeme admin bar pro přihlášené uživatele:

if (!current_user_can('manage_options')) {
add_filter('show_admin_bar', '__return_false');
}

Následně každého, kdo by chtěl vstoupit do administrace a není admin přesměrujeme na hlavní stranu našeho webu:

add_action('admin_init','redirect_nonadmin_fromdash');
 
function redirect_nonadmin_fromdash(){
 
if (!current_user_can('manage_options')) {
 
header( 'Location: http://www.nase-sablona.cz/' ) ;
}
 
}

A to je vše.

Čtěte  Tlačítko pro uložení článku vždy po ruce

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Related posts

6 Comments

  1. milon

    Ahoj. Lze stejně editovat i levé admin menu? Například nechci aby určitý správce neměl přístup na stránku s nastavením pluginů. Doposud jsem na to používal Advanced Access Manager. Díky.

    Reply
  2. Musilda

    Určitě, jde to takto:

    add_action( ‚admin_init‘, ‚my_remove_menu_pages‘ );

    function my_remove_menu_pages() {
    if(!current_user_can(‚publish_posts‘)) {
    remove_menu_page(‚tools.php‘);
    }
    }

    místo publish_posts si dej to co budeš potřebovat. Samozřejmě, že by se funkce dala upravit pro nick, id určitého uživatele, záleží na tom, na co to potřebuješ.

    Reply
  3. milon

    Díky funguje to. Má to, ale jeden háček. Jednotlivé stránky administrace se pouze skrývají, ale je
    možné se na ně dostat zadáním url stránky. Když někomu budu chtít zakázat stránku s pluginy a on zadá example.com/wp-admin/plugins.php tak se na pluginy dostane.

    Reply
  4. Musilda

    Tak ještě musíš přesměrovat uživatele

    global $pagenow;

    if ($pagenow == ‚plugins.php‘) {

    if (!current_user_can(‚manage_options‘)) {

    header( ‚Location: http://www.nase-sablona.cz/‚ ) ;
    }

    }

    Ale píšu to z hlavy, takže to musíš otestovat.

    Reply
  5. Rastislav

    Dobrý deň, toto dobre funguje, ale skryje mi to zo stránky aj rozbaľovaciu ponuku BuddyPress. Dá sa to vyriešiť?

    Reply
    1. Musilda

      Dobrý den
      tak toto je jen jednoduché řešení. Takže skryje celý admin bar.

      Reply

Leave a Reply

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Chcete mít přehled o dění ve světě WordPressu?

Přímo do vašeho emailu

Pravidelný přehled o novinkách, trendech a událostech, které se točí kolem WordPressu. Souhrn toho nejzajímavějšího od nás i ze zahraničí.