Deshabilitar la opción de edición en la biblioteca de medios

2

Al pasar el mouse sobre un nombre de archivo o una miniatura, aparece la opción Editar. Quiero saber si hay algún gancho para deshabilitar todos los enlaces de edición en la biblioteca de Medios en Multisite.

    
pregunta Ghinnersmee 25.07.2013 - 14:26

2 respuestas

3

Hay varios filtros que puedes utilizar:

Contenido de columna personalizado

Si tienes una columna personalizada que agregaste con el filtro '', entonces puedes usar el

manage_{$post->post_type}_posts_custom_column

filtro para alterar el contenido. Si solo desea apuntar a tipos de publicaciones no jerárquicas, también existe manage_posts_custom_column y, para los jerárquicos, manage_pages_custom_column . Los tres filtros tienen dos argumentos: $column_name, $post->ID .

Para la biblioteca de medios hay un filtro especial: manage_media_custom_column .

Eliminando acciones

IIRC, hay el siguiente filtro para agregar o eliminar diferentes acciones:

apply_filters( 'bulk_actions-' . $this->screen->id, $this->_actions );

Debería poder obtener el ID de pantalla de get_current_screen()->ID .

Para la biblioteca de medios es, de nuevo, un caso especial y debe usar el

apply_filters( 'media_row_actions', $actions, $post, $this->detached );

filtro.

Asegúrate de no usar $this-> dentro de tus argumentos de devolución de llamada ya que no estás en el contexto del objeto.

Eliminando el enlace de la imagen

Hasta ahora no hay posibilidad de eliminar por completo la etiqueta <a href="" ... sin mucho esfuerzo. Pero puede (simplemente) establecer el destino del enlace a la página actual con el uso del filtro de get_edit_post_link .

Solo redirígelo a sprintf( '#post-%s', $post_id ); :

add_filter( 'get_edit_post_link', 'wpse107783_remove_media_icon_link', 20, 2 );
function wpse107783_remove_media_icon_link( $url, $post_id )
{
    if ( 'upload' !== get_current_screen()->id )
        return $url;

    return sprintf( '#post-%s', $post_id );
}

¿Por qué no CSS o JS?

La gente aún podría eliminar los escuchas de eventos o las reglas de CSS a través de sus herramientas de desarrollo, que es algo que quizás no quieras.

Redireccionar

Un bloqueo real solo puede ocurrir en el lado del servidor basado en roles y capacidades.

add_action( 'template_redirect', 'wpse107783_redirect_media_edit' );
function wpse107783_redirect_media_edit()
{
    if (
        ! is_admin()
        OR 'attachment' !== get_current_screen()->id
    )
        return;

    exit( wp_redirect( admin_url() ) );
}

Nota: No estoy seguro de si template_redirect es el gancho de la derecha aquí. También podría ser admin_menu o init .

    
respondido por el kaiser 25.07.2013 - 20:07
2

Agregue algo de CSS a admin_head para ocultar la barra de acciones de la imagen, y oculte el botón de edición una vez que haga clic en la imagen:

Esto debería hacer el truco:

function hide_image_edit_link() {
    echo "<style type=\"text/css\">
            table.media .row-actions {display:none;}
            .wp_attachment_image input[id^=\"imgedit-open-btn\"] {display:none;}
        </style>";
}
add_action('admin_head', 'hide_image_edit_link');
    
respondido por el Matt.C 25.07.2013 - 15:28

Lea otras preguntas en las etiquetas