Cómo evitar que WordPress elimine una publicación

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

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *