,

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‘))…

Obsah článku

Přidejte záhlaví a začněte generovat tabulku obsahu

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.

7 komentářů: „Jak zobrazit WordPress administraci pouze pro administrátory“

  1. milon avatar
    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.

  2. Musilda avatar
    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š.

  3. milon avatar
    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.

  4. Musilda avatar
    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.

  5. Rastislav avatar
    Rastislav

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

  6. Musilda avatar
    Musilda

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

  7. Alena avatar

    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