Wyłącz „szybką edycję” tylko dla nieadministratora w functions.php

11

Mam to w mojej funkcji.php

function remove_quick_edit( $actions ) {
    unset($actions['inline hide-if-no-js']);
    return $actions;
}
add_filter('post_row_actions','remove_quick_edit',10,1);

aby usunąć link do szybkiej edycji w backendie podczas przewijania listy opublikowanych postów.

Działa jak urok, ale wyłącza go nawet dla roli administratora. Czy jest możliwe, aby wyświetlał się tylko dla administratora, jednocześnie szukając reszty? Dzięki!

ROZWIĄZANE dzięki jfacemyer! Jest to pełny kod do dodania w functions.php

function remove_quick_edit( $actions ) {
    unset($actions['inline hide-if-no-js']);
    return $actions;
}
if ( ! current_user_can('manage_options') ) {
    add_filter('post_row_actions','remove_quick_edit',10,1);
}
użytkownik27309
źródło
Wierzę, że wtyczka User Role Editor pozwoli ci to zrobić. Jeśli się mylę, możesz mnie uderzyć w głowę.
Jared Steffen
Wtyczka roli użytkownika sprawiła, że ​​moja strona jest niestabilna, więc musiałem ją wyłączyć i dodałem wszystkie małe fragmenty kodu, których potrzebowałem w swoich funkcjach. Php udostępniając je na wypadek, gdyby chciałem w przyszłości replikować ten projekt. Niestety brakuje mi szybkiego usuwania edycji tylko dla nie-administratorów ...
user27309 20.03.2013
Zachowaj ostrożność: przedstawione rozwiązanie nie usuwa opcji „edytuj” z działań zbiorczych. Aby to zrobić, musisz dodać ten fragment koduadd_filter( 'bulk_actions-edit-post', 'remove_from_bulk_actions' ); function remove_from_bulk_actions( $actions ){ unset( $actions[ 'edit' ] ); return $actions; }
Marco Panichi

Odpowiedzi:

9

Użyj, current_user_canaby zakończyć add_filterpołączenie:

if ( current_user_can('manage_options') ) {
} else {
    add_filter('post_row_actions','remove_quick_edit',10,1);
}

manage_optionsjest funkcją administratora. Jeśli bieżący użytkownik może to zrobić, jest administratorem (w instalacji waniliowej WP).

Widzieć:

http://codex.wordpress.org/Roles_and_Capabilities

i

http://codex.wordpress.org/Function_Reference/current_user_can

jfacemyer
źródło
Nie jest tu specjalnie wymienione, ale dla hierarchicaltypów postów powinieneś użyć: page_row_actionspatrz core.trac.wordpress.org/browser/tags/5.2.2/src/wp-admin/…
farinspace
8

Oto kod, jeśli chcesz również usunąć opcję Szybkiej edycji ze stron:

function remove_quick_edit( $actions ) {
    unset($actions['inline hide-if-no-js']);
    return $actions;
}
if ( !current_user_can('manage_options') ) {
    add_filter('page_row_actions','remove_quick_edit',10,1);
    add_filter('post_row_actions','remove_quick_edit',10,1);
}
Zeh Ferrari
źródło
0

Przynajmniej w WP 4.3.1 można użyć nazwy roli w current_user_can(). Kod może teraz wyglądać następująco:

function remove_quick_edit( $actions ) {
  unset($actions['inline hide-if-no-js']);
  return $actions;
}
if ( !current_user_can('administrator') ) {
  add_filter('post_row_actions','remove_quick_edit',10,1);
}

Czystszy i bardziej intuicyjny.

jmarceli
źródło
0

Uwzględnij to w pliku function.php

add_action('admin_head', 'wc_my_custom_css');
function wc_my_custom_css() {
     echo '<style>
               .hide-if-no-js {
                  display:none !important;
               }
          </style>';
}
mark steve poniente
źródło