从前端和附件永久删除帖子

时间:2011-05-24 作者:jimilesku

有没有办法从前端永久删除帖子及其附件?这是一个将帖子移动到垃圾桶的片段,但它不会删除附加的图像(它们仍保留在服务器上),也不会永久删除帖子?有人能帮忙吗?

<?php 
$url = get_bloginfo(\'url\');
if (current_user_can(\'edit_post\', $post->ID)){
echo \'<a class="delete-post" href="\';
echo wp_nonce_url("$url/wp-admin/post.php?action=delete&post=$id", \'delete-post_\' . $post- 
>ID);
echo \'">Delete post</a>\';
}
?>

1 个回复
最合适的回答,由SO网友:two7s_clash 整理而成

尝试:

<?php if (current_user_can(\'edit_post\', $post->ID)) echo "<a href=\'" . wp_nonce_url("/wp-admin/post.php?action=delete&amp;post=$id", \'delete-post_\' . $post->ID) . "\'>Delete post</a>" ?>
您可以通过将此代码添加到wp配置来决定何时清空WordPress垃圾箱。WordPress根目录中的php文件。

define(\'EMPTY_TRASH_DAYS\', 1 );
代码中的1表示您想每天清空垃圾。如果设置为0,垃圾箱功能将被禁用。

最后,当图像不再附加到页面时,WordPress不会删除图像。有关说明,请参阅此票据:http://core.trac.wordpress.org/ticket/12108 要点是

媒体文件也可能被其他帖子使用,因此必须在媒体库中删除这些文件。如果我们将其更改为从帖子中删除一个文件会将其从系统中完全删除,这将破坏现有行为并导致大量无意删除。

如果你想违背这种理性,你可以把它添加到你的函数中。php:

function delete_post_children($post_id) {
    global $wpdb;

    $ids = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE post_parent = $post_id AND post_type = \'attachment\'");

    foreach ( $ids as $id )
        wp_delete_attachment($id);
}
add_action(\'delete_post\', \'delete_post_children\');
Also see Upload Janitor 如果要使用插件路径删除未附加的图像。

结束