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.
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.
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š.
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.
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.
Dobrý deň, toto dobre funguje, ale skryje mi to zo stránky aj rozbaľovaciu ponuku BuddyPress. Dá sa to vyriešiť?
Dobrý den
tak toto je jen jednoduché řešení. Takže skryje celý admin bar.
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