Deshabilite la "edición rápida" solo para usuarios que no sean administradores en functions.php

11

Tengo esto en mis funciones.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);

para eliminar el enlace de edición rápida en el backend al desplazarse por la lista de publicaciones publicadas.

Funciona de maravilla, pero lo deshabilita incluso para el rol de administrador. ¿Es posible mantenerlo solo para el administrador mientras sigue marcando el resto? ¡Gracias!

¡RESUELTO gracias a jfacemyer! Este es el código completo para agregar en 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);
}
usuario27309
fuente
Creo que el complemento Editor de roles de usuario te permitirá hacer esto. Siéntete libre de golpearme en la cabeza si me equivoco.
Jared Steffen
El complemento de rol de usuario ha hecho que mi sitio sea inestable, por lo que necesitaba deshabilitarlo y he agregado todos los pequeños trozos de código que necesitaba en mis functions.php para que estén disponibles en caso de que quiera replicar este proyecto en el futuro. Por desgracia, me falta la eliminación de edición rápida sólo a no administradores ...
user27309
Tenga cuidado: la solución que describió no elimina "editar" de la selección de acciones masivas. Para hacerlo, debe agregar este fragmento de códigoadd_filter( 'bulk_actions-edit-post', 'remove_from_bulk_actions' ); function remove_from_bulk_actions( $actions ){ unset( $actions[ 'edit' ] ); return $actions; }
Marco Panichi, el

Respuestas:

9

Use current_user_canpara finalizar la add_filterllamada:

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

manage_optionses una capacidad de administrador. Si el usuario actual puede hacerlo, es un administrador (en una instalación vainilla de WP).

Ver:

http://codex.wordpress.org/Roles_and_Capabilities

y

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

jfacemyer
fuente
No se menciona específicamente aquí, pero para los hierarchicaltipos de publicación, debe usar: page_row_actionsconsulte core.trac.wordpress.org/browser/tags/5.2.2/src/wp-admin/…
farinspace
8

Aquí está el código si también desea eliminar la opción Edición rápida de las páginas:

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

Al menos en WP 4.3.1 es posible usar el nombre de rol en current_user_can(). Entonces el código ahora puede verse así:

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

Más limpio y más intuitivo.

jmarceli
fuente
0

Incluye esto en tu 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
fuente