web-dev-qa-db-fra.com

Supprimer le message du serveur frontal et la pièce jointe de façon permanente

Existe-t-il un moyen de supprimer définitivement une publication de From Front-End et ses pièces jointes? Ceci est un extrait qui déplace le message vers la corbeille, mais ne supprime pas les images jointes (elles restent sur le serveur) et ne supprime pas le message de manière permanente. Quelqu'un pourrait-il s'il vous plaît aider?

<?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>';
}
?>
2
jimilesku

Essayer:

<?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>" ?>

Vous pouvez décider quand vider la corbeille WordPress en ajoutant ce code au fichier wp-config.php de votre répertoire racine WordPress.

define('EMPTY_TRASH_DAYS', 1 );

Le 1 dans le code signifie que vous souhaitez vider la corbeille tous les jours. Si vous définissez sur 0, la fonctionnalité de corbeille sera désactivée.

Enfin, WordPress ne supprime pas les images lorsqu'elles ne sont plus attachées à une page. Voir ce billet pour une explication: http://core.trac.wordpress.org/ticket/12108 En bref: Gist

les fichiers multimédias peuvent également être utilisés par d'autres publications, raison pour laquelle ils doivent être supprimés de la médiathèque. Si nous le changions de sorte que la suppression d'un fichier d'une publication le supprime complètement du système, cela briserait le comportement existant et entraînerait de nombreuses suppressions involontaires.

Si vous voulez aller à l'encontre de ce rationnel, vous pouvez ajouter ceci à votre functions.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');

Voir également Upload Janitor si vous souhaitez suivre la route du plug-in pour supprimer les images non attachées.

2
two7s_clash

Il n'est pas nécessaire d'appeler la base de données manuellement, cela fonctionne aussi:

add_action( 'delete_post', 'delete_post_children' );

function delete_post_children( $post_id )
{
    foreach( get_attached_media( '', $post_id ) as $attachment )

        wp_delete_attachment( $attachment->ID );
}
0
user16124