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.

About The Author

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

Související články

7 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.

    Odpověď
  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š.

    Odpověď
  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.

    Odpověď
  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.

    Odpověď
  5. Rastislav

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

    Odpověď
  6. Alena

    Dobrý den,
    bude tento postup fungovat i když místo přesměrování na hlavní stránku, nastavím přesměrování do členské sekce, která je určená pouze pro přihlášené uživatele?

    Web máme postavený v Elementoru, Než začnu upravovat functions.php, doporučíte mi případně i nějaký dobrý plugin, který toto umí? Stačí klidně odkaz na nějaký váš článek, kde si to najdu, pokud jste zde o tom již psal.

    Moc děkuji

    Odpověď

Přidejte komentář

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