Выдаліць ўкладку Параметры экрана, калі не адмін

Як падказвае назву, я шукаю спосаб, каб выдаліць ўкладку Параметры экрана ў акне рэдактара паведамленняў/старонкі. Я знайшоў наступнае ...

function remove_screen_options(){ __return_false;}
add_filter('screen_options_show_screen', 'remove_screen_options');

... але яна выдаляе ўкладку для ўсіх карыстальнікаў. Я хацеў бы захаваць яго для адмінаў.

З павагай,

Джон

Знойдзены адказ пасля супрацоўніцтва ўсіх вашых намаганняў. Дзякуй.

get_currentuserinfo() ;
global $user_level;

function remove_screen_options(){ __return_false;}
if( $user_level <= 8 ) add_filter('screen_options_show_screen', 'remove_screen_options');
2
WordPress мае адмысловы вэб-сайт Stackexchange глядзіце тут: wordpress.stackexchange.com
дададзена аўтар user2019515, крыніца

7 адказы

Выкарыстанне магчымасцяў, як Спенсер мяркуе, як правіла, самы лепшы метад.

I'm thinking most people find roles & capabilities to be overly confusing. Using the actual user role with 'current_user_can' is more often than not your best bet for this or any other similar 'permission' based situation.

Часцей за ўсё вы будзеце ў канчатковым выніку даданне/выдаленне магчымасці для пэўнай ролі, так што калі вы калі-небудзь даць камусьці яшчэ магчымасць «manage_options», як, магчыма, уладальнік бізнесу, вы раптам даў іх назад параметры экрана а таксама (On «activate_plugins» нататка боку, як правіла, бяспечная, бо толькі для каго-тое, што мае 10 ўзроўню доступу). Вы можаце праверыць усе permissons на старонцы Capability Узровень карыстальніка Табліца ў ніжняй частцы старонкі, каб атрымаць лепшае разуменне на ўсё гэта.

Ўстаўце гэта ў функцыі PHP:

if( !current_user_can('administrator') ) {
 //hide screen options for everyone but the admin
add_filter('screen_options_show_screen', 'remove_screen_options_tab');
}

if( current_user_can('administrator') ) {
 //code here is shown to the admin
}

Пасля гэтага фармату вы можаце зрабіць тое ж самае з іншымі ролямі. Акрамя таго, вы не маеце з'яўляецца адміністратар змяненняў у рэдактар, аўтар, укладчык і абанент, або любых іншыя ролі, якія вы ствараеце.

2
дададзена

Калі вы змесціце наступны фрагмент кода ў файл functions.php, ўкладка Параметры экрана знікне праз увесь бэкэнд для ўсіх карыстальнікаў, акрамя адміністратара. Сказаўшы, што гэта добрая практыка, каб выправіць файл PHP вашага дзіцяці тэмы.

functions.php код:

function remove_screen_options_tab() 
{
    return current_user_can('manage_options' );
}   
add_filter('screen_options_show_screen', 'remove_screen_options_tab');
2
дададзена

Вам проста трэба ўмоўна праверыць, калі бягучы карыстальнік з'яўляецца адміністратарам. Калі іх няма, то выдаліць параметры экрана, як так:

if ( !is_admin() ) {
  function remove_screen_options(){ __return_false;}
  add_filter('screen_options_show_screen', 'remove_screen_options');
}

Here are the official Wordpress docs detailing this function: http://codex.wordpress.org/Function_Reference/is_admin

1
дададзена
@Glen, is_admin() правярае, ці з'яўляецца гэта запыт на старонцы адміністратара. Гэта не мае нічога агульнага з роляй бягучага карыстальніка.
дададзена аўтар Spencer Cameron-Morin, крыніца
Добра, дзякуй за тлумачэнне.
дададзена аўтар Glen Selle, крыніца
Прывітанне Глен, што не працуе ні; ўкладка паказвае для ўсіх карыстальнікаў. Дзякуй, хоць.
дададзена аўтар John, крыніца

Вось метад CSS для ўсіх дызайнераў, а трымацца далей ад PHP. Ён перахапляе ў admin_body_class і дадае карыстальнік {} ролю як клас цела.

functions.php код:

function hide_using_css_user_role( $classes ) {
global $current_user;
foreach( $current_user->roles as $role )
    $classes .= ' user-' . $role;

return trim( $classes );
 }
add_filter( 'admin_body_class', 'hide_using_css_user_role' );

З дапамогай гэтага вы можаце схаваць/паказаць што-небудзь на баку адміністратара ў ролі карыстальніка. У гэтым выпадку проста выкарыстоўваць: ня селектар CSS, каб пераканацца, што ён скрыты толькі для не-адміністратараў.

function add_my_custom_user_css() {
ob_start(); ?>



<?php
echo ob_get_clean();
}
add_action ( 'admin_head', 'add_my_custom_user_css', 999);

Гэта даволі Hacky спосаб рабіць рэчы, але часам добра для часовага хутка выправіць, калі вы не ведаеце правільны фільтр/дзеянне, каб схаваць ці змяніць у WordPress. Даданне 999 будзе пераканацца, што ён загружаецца ў канцы галоўкі тэга. Звярніце ўвагу, што гэта толькі хаваецца з дапамогай CSS, так што не выкарыстоўваць гэта для чаго-небудзь жыццёва важнага, таму што код па-ранейшаму бачны ў зыходным файле.

Для таго, каб выдаліць яго з зыходнага выкарыстання jQuery замест гэтага. Проста заменіце стылі вышэй з наступным:

<script type="text/javascript">
jQuery(document).ready(function($)) {
$( ":not(.user-administrator) #screen-options-link-wrap" ).remove();
}
</script>

«Admin_body_class» ужо робіць нам ласку дадання старонкі да класа цела, таму арыентавацца на канкрэтныя старонкі, а проста праверыць зыходны код і ў тэгу цела вы можаце ўбачыць бягучую старонку. Так, напрыклад, прыборная панэль выкарыстоўвае .index-PHP. Проста прыкладзеце, што .user-адміністратар або любы іншы карыстальніка вы арыентуецеся, і вы можаце наладзіць адміністратар для любога карыстальніка толькі з дапамогай CSS і JavaScript.

0
дададзена

Выкарыстанне Adminimize, A WordPress убудова, які дазваляе схаваць «непатрэбныя» прадметы з ўнутранага інтэрфейсу WordPress.

http://wordpress.org/plugins/adminimize/

0
дададзена
Adminimize сапраўды выдатны убудова, але гэта не здымае экран, проста схаваць меню з дапамогай CSS. Хоць некаторыя людзі сцвярджаюць, што вынік той жа, што, па сутнасці, ня ..
дададзена аўтар Obmerk Kronen, крыніца

паспрабуйце гэта

if(!current_user_can('manage_options')) add_filter('screen_options_show_screen', 'remove_screen_options');
0
дададзена
Паспрабуйце з! Is_super_admin() або з! Current_user_can ( 'manage_options')
дададзена аўтар Sam, крыніца
@SpencerCameron праўда, і мая нянавісць да смеццю заўсёды больш вялікая
дададзена аўтар Sam, крыніца
@ Сэм, is_admin() правярае, ці з'яўляецца гэта запыт на старонцы адміністратара. Гэта не мае нічога агульнага з роляй бягучага карыстальніка.
дададзена аўтар Spencer Cameron-Morin, крыніца
Прывітанне Сэм, дзякуй за адказ, але гэта не выдаліць ўкладку для любога карыстальніка.
дададзена аўтар John, крыніца

Вы шукаеце для функцыі current_user_can :

if( current_user_can( 'manage_options' ) ) {
   //executes when user is an Administrator
}
0
дададзена