Como impedir que uma postagem seja excluída?

8

Para problemas de auditoria, só quero que uma postagem seja lixeira, mas não excluída - para todos os usuários.

Então eu tenho um plugin como

add_action('before_delete_post', function($id) {
        wp_die(0);
    });

Mas parece que nem todas as ações de exclusão são ajax, então será mostrado uma tela preta com o retorno de uma página de erro com resultado "0"

Em termos de funcionalidade, o código acima está ok, mas existe alguma maneira melhor?

    
por Yoga 24.03.2013 / 16:45

2 respostas

8

Não deixe a ação morrer, apenas faça um redirecionamento (para onde você quiser):

function wpse_92155_before_delete_post() {
    wp_redirect(admin_url('edit.php'));
    exit();
} // function wpse_92155_before_delete_post
add_action('before_delete_post', 'wpse_92155_before_delete_post', 1);
    
por tfrommen 24.03.2013 / 17:36
5

Eu usaria o gancho before_delete_post como a última camada de proteção contra exclusão (usando a solução do @ tf e qual é a Resposta correta).

E primeiro remova as opções "Excluir" de vista. O seguinte oculta as Ações em massa e o botão Esvaziar lixeira e remove a ação de linha Excluir permanentemente .

Comestecó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);functionhide_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 é o resultado:

Notadeinteresse

Nãoháganchocpt_row_actions.Osganchospage_row_actionsepost_row_actionssão aplicado se o tipo de postagem for hierárquico ou não , respectivamente.

    
por brasofilo 25.03.2013 / 01:27