web-dev-qa-db-ja.com

フロントエンドから添付ファイルを削除

adminとしてログインし、投稿を削除して添付ファイルを削除するコードを作成しようとしています。

得た

<?php if (current_user_can('edit_post', $attachment->ID)) 
echo "<a href='" . wp_nonce_url("/wp-admin/post.php?action=delete&amp;post=".$attachment->ID."", 'delete-post_' . $attachment->ID) . "'>Delete</a>" ?>

しかしそれだけで私は言うページに連れて行きます。

本当にこれを実行しますか?もう一度お試しください。

投稿へのリンクをもう一度お試しください。

delete-post_ と関係がありますか

最高です、ダン。

4
v3nt

結局ajaxを使ってしまいました...

html;

<a class="remImage" name="<?php echo $attachment->ID; ?>" href="#"><?php _e('delete');?></a>  <input type="hidden" id="att_remove" name="att_remove[]" value="<?php echo $attachment->ID; ?>" />
<input type="hidden" name="nonce" id="nonce" value="<?php echo wp_create_nonce( 'delete_attachment' ); ?>" />

お酒

$('.remImage').live('click', function() {
    var attID = jQuery(this).attr('name');
    jQuery.ajax({
        type: 'post',
        url: '/wp-admin/admin-ajax.php',
        data: {
            action: 'delete_attachment',
            att_ID: jQuery(this).attr('name'),
            _ajax_nonce: jQuery('#nonce').val(),
            post_type: 'attachment'
        },
        success: function() {
            console.log('#file-'+attID)
            $('#file-'+attID).fadeOut();    
        }
});

functions.phpに

add_action( 'wp_ajax_delete_attachment', 'delete_attachment' );
function delete_attachment( $post ) {
    //echo $_POST['att_ID'];
    $msg = 'Attachment ID [' . $_POST['att_ID'] . '] has been deleted!';
    if( wp_delete_attachment( $_POST['att_ID'], true )) {
        echo $msg;
    }
    die();
}
2
v3nt