Désactivez la «modification rapide» uniquement pour les non-administrateurs dans functions.php

11

J'ai ceci dans mes fonctions.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);

pour supprimer le lien d'édition rapide dans le backend lors du défilement de la liste des publications publiées.

Cela fonctionne comme un charme, mais il le désactive même pour le rôle d'administrateur. Est-il possible de le garder affiché uniquement pour l'administrateur tout en continuant à diabler pour le reste? Merci!

RESOLU grâce à jfacemyer! Ceci est le code complet à ajouter dans 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);
}
user27309
la source
Je pense que le plugin User Role Editor vous permettra de le faire. N'hésitez pas à me frapper à la tête si je me trompe.
Jared Steffen
Le plugin de rôle utilisateur a rendu mon site instable, j'ai donc dû le désactiver et j'ai ajouté tous les petits morceaux de code dont j'avais besoin dans mes fonctions.php les rendant disponibles au cas où je souhaiterais répliquer ce projet à l'avenir. Malheureusement, la suppression de la modification rapide ne me manque que pour les non-administrateurs ...
user27309
Veuillez faire attention: la solution que vous avez décrite ne supprime pas "modifier" de la sélection d'actions en masse. Pour ce faire, vous devez ajouter cet extrait de codeadd_filter( 'bulk_actions-edit-post', 'remove_from_bulk_actions' ); function remove_from_bulk_actions( $actions ){ unset( $actions[ 'edit' ] ); return $actions; }
Marco Panichi

Réponses:

9

Utilisez current_user_canpour terminer l' add_filterappel:

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

manage_optionsest une fonction d'administration. Si l'utilisateur actuel peut le faire, il est administrateur (sur une installation vanilla WP).

Voir:

http://codex.wordpress.org/Roles_and_Capabilities

et

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

jfacemyer
la source
Il n'est pas spécifiquement mentionné ici, mais pour hierarchicalles types de publication, vous devez utiliser: page_row_actionsvoir core.trac.wordpress.org/browser/tags/5.2.2/src/wp-admin/…
farinspace
8

Voici le code si vous souhaitez également supprimer l'option Édition rapide des pages:

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
la source
0

Au moins dans WP 4.3.1, il est possible d'utiliser le nom de rôle dans current_user_can(). Ainsi, le code peut maintenant ressembler à ceci:

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

Plus propre et plus intuitif.

jmarceli
la source
0

Incluez ceci dans votre 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
la source