Deaktivieren Sie "Schnellbearbeitung" nur für Nicht-Administratoren in functions.php

10

Ich habe dies in meiner functions.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);

um den Schnellbearbeitungslink im Backend zu entfernen, wenn Sie durch die Liste der veröffentlichten Beiträge scrollen.

Es funktioniert wie ein Zauber, aber es deaktiviert es sogar für die Administratorrolle. Ist es möglich, dass es nur für den Administrator angezeigt wird, während es für den Rest weiterhin deaktiviert ist? Vielen Dank!

Gelöst dank jfacemyer! Dies ist der vollständige Code, der in functions.php hinzugefügt werden muss

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);
}
user27309
quelle
Ich glaube, das Plugin für den Benutzerrollen-Editor lässt Sie dies tun. Fühlen Sie sich frei, mir in den Kopf zu schlagen, wenn ich falsch liege.
Jared Steffen
Das Benutzerrollen-Plugin hat meine Site instabil gemacht, sodass ich sie deaktivieren musste, und ich habe alle kleinen Codeteile hinzugefügt, die ich in meiner functions.php benötigte, um sie verfügbar zu machen, falls ich dieses Projekt in Zukunft replizieren möchte. Leider fehlt mir das schnelle Entfernen der Bearbeitung nur für Nicht-Administratoren ...
user27309
Bitte seien Sie vorsichtig: Die von Ihnen beschriebene Lösung entfernt "Bearbeiten" nicht aus der Auswahl von Massenaktionen. Um dies zu tun, müssen Sie diesen Codeausschnitt hinzufügenadd_filter( 'bulk_actions-edit-post', 'remove_from_bulk_actions' ); function remove_from_bulk_actions( $actions ){ unset( $actions[ 'edit' ] ); return $actions; }
Marco Panichi

Antworten:

9

Verwenden Sie current_user_candiese Option, um den add_filterAnruf zu beenden :

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

manage_optionsist eine Admin-Funktion. Wenn der aktuelle Benutzer dies kann, ist er ein Administrator (bei einer Vanilla WP-Installation).

Sehen:

http://codex.wordpress.org/Roles_and_Capabilities

und

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

jfacemyer
quelle
Es wird hier nicht speziell erwähnt, aber für hierarchicalBeitragstypen sollten page_row_actionsSie Folgendes
farinspace
7

Hier ist der Code, wenn Sie die Option "Schnellbearbeitung" auch von den Seiten entfernen möchten:

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
quelle
0

Zumindest in WP 4.3.1 ist es möglich, den Rollennamen in zu verwenden current_user_can(). Der Code könnte nun so aussehen:

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);
}

Sauberer und intuitiver.

jmarceli
quelle
0

Nehmen Sie dies in Ihre function.php auf

add_action('admin_head', 'wc_my_custom_css');
function wc_my_custom_css() {
     echo '<style>
               .hide-if-no-js {
                  display:none !important;
               }
          </style>';
}
Markieren Sie Steve Poniente
quelle