Cómo evitar que WordPress elimine una publicación
A primera vista, parece que no hay ganchos o filtros en WordPress para evitar que se elimine una publicación/página. Sin embargo, podrá hacerlo filtrando user_has_cap (abreviado de usuario tiene capacidad). este puede ser un filtro muy poderoso y podrás usarlo para bloquear prácticamente cualquier cosa en WordPress. estos son 3 parametros:
Cuando se elimina una publicación, $argumentos está a punto de formar ('delete_post', $user_id, $post_id)Las capacidades requeridas para permitir la eliminación son Sostuvo dentro de la matriz $caps y puede variar según el tipo de publicación que se elimine (por ejemplo, 'delete_published_posts'). $mayúsculas coincide con un elemento en $allcaps. Para evitar que se elimine la publicación, todo lo que queremos hacer es cambiar $allcaps configurando uno de todos los valores enumerados en $caps a false (por ejemplo, $ en mayúsculas[$caps[0]]= falso).
Como ejemploel siguiente código evita la última publicación paginas de un sitio web eliminado.
- $allcaps (matriz de todas las mayúsculas, cada una configurada como verdadera o falsa)
- $mayúsculas( Ana conjunto de capacidades requeridas por la operación actual)
- $args (una matriz de argumentos asociados con esta operación).
add_filter ('user_has_cap', 'athemeart_prevent_last_page_deletion', 10, 3);
function athemeart_prevent_last_page_deletion ($allcaps, $caps, $args) {
global $wpdb;
if (isset($args[0]) && isset($args[2]) && $args[0] == 'delete_post') {
$post = get_post ($args[2]);
if ($post->post_status == 'publish' && $post->post_type == 'page') {
$query = "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_status="publish" AND post_type = %s";
$num_posts = $wpdb->get_var ($wpdb->prepare ($query, $post->post_type));
if ($num_posts < 2)
$allcaps[$caps[0]] = false;
}
}
return $allcaps;
}
Espero que encuentres útil este artículo.
Si tiene alguna pregunta, pregúntenos en la sección de comentarios a continuación.
¡Inspíranos con tu amor!
FacebookgorjeoReddit
Deja una respuesta