Actualizar
De hecho, hay una manera de definir un término por taxonomía como término predeterminado que hace que no se pueda eliminar de la GUI del administrador.
WP_Terms_List_Table
busca una opción get_option( 'default_' . $this->screen->taxonomy )
.
Entonces, si tiene una taxonomía personalizada llamada genre
, debe configurar una opción default_genre
con el término-id del término que desea proteger para que no se elimine a través de la GUI del administrador:
$taxonomy = 'genre';
$key = get_option( 'default_' . $taxonomy );
$term = get_term_by( 'name', 'Your default genre term', $taxonomy );
if ( empty( $key ) && $term )
update_option( $key, $term->term_id );
tl; dr En mi primera respuesta me perdí esta función. Pero la descripción del manejo de la capacidad sigue siendo válida.
primera respuesta
En este punto, no es posible. Esto se debe a que en WP_Terms_List_Table
todas las comprobaciones de capacidad se realizan de esta forma:
current_user_can( $tax->cap->delete_terms );
Eso significa que todas las comprobaciones de vista son, si el usuario tiene el privilegio de eliminar términos en esta categoría en general. Sería posible, si la llamada a la función se ve así:
current_user_can( $tax->cap->delete_terms, $tag )
donde $tag
sería el término objeto.
En este caso, podría filtrar fácilmente map_meta_cap
(donde se pasa la verificación de capacidad y el segundo parámetro) para revocar el privilegio de eliminar un término específico.
Por cierto, este es el comportamiento predeterminado en WP_Posts_List_Table
, por lo que es posible verificar las capacidades de cada publicación.
La única forma que veo en este momento es registrar una taxonomía sin los elementos de la IU de administrador predeterminados y crear una página de administración personalizada para administrar los términos según sus necesidades.