Usaría el gancho before_delete_post
como la última capa de protección contra la eliminación (usando la solución de @ tf, y cuál es la respuesta correcta).
Y primero elimine las opciones "Eliminar" de la vista. A continuación, se ocultan las acciones en bloque y el botón Vaciar papelera , y se elimina la acción Eliminar fila permanentemente .
Con este código:
add_action( 'admin_head-edit.php', 'hide_delete_css_wpse_92155' );
add_filter( 'post_row_actions', 'hide_row_action_wpse_92155', 10, 2 );
add_filter( 'page_row_actions', 'hide_row_action_wpse_92155', 10, 2 );
function hide_delete_css_wpse_92155()
{
if( isset( $_REQUEST['post_status'] ) && 'trash' == $_REQUEST['post_status'] )
{
echo "<style>
.alignleft.actions:first-child, #delete_all {
display: none;
}
</style>";
}
}
function hide_row_action_wpse_92155( $actions, $post )
{
if( isset( $_REQUEST['post_status'] ) && 'trash' == $_REQUEST['post_status'] )
unset( $actions['delete'] );
return $actions;
}
Este es el resultado:
Nota de interes
No hay ningún gancho cpt_row_actions
. Los ganchos page_row_actions
y post_row_actions
se aplican si el tipo de publicación es jerárquico o no , respectivamente.