我认为我所需要做的事情是正确的,至少是因为我做了可以做到的事情之一。虽然我不太确定,但据我所知,我可能会偏离正轨。
这是昨晚我需要帮助调整上传图像文件大小的代码的一部分,但现在我正试图找出如何使用wp\\u delete\\u attachment($id)功能删除附在帖子上的图像。
因此,我有一个jQuery脚本,它可以添加/删除额外的字段,用于上传更多要附加的图像。对于每个添加的图像,都有一个删除它们的链接。单击“删除”只会删除所单击的链接所包含的div,保存帖子时,附加文件将显示为仍然附加。
在remove链接的click事件处理程序中,我需要首先运行调用wp\\u delete\\u attachment()的函数,以永久删除文件/附件,然后我可以使用jQuery从页面中删除该附件的div。这样,当保存帖子时,它将被删除,不再显示。
以下是我一直尝试使用的函数:
// a function that returns the delete attachment php function,
// and a message saying Deleted that fades in and out.
jQuery(function() {
function delete_att( attID ) {
var div = jQuery(\'#img_uploads\'),
msg = $(\'div\').html(\'<strong>Attachment Deleted!</strong>\').fadeIn().delay(200).fadeOut().appendTo(\'div\');
return \'<?php wp_delete_attachment( \' + attID + \', true ); ?>\', msg;
}
调用此函数并从页面中删除包含div元素的单击处理程序是:
jQuery(\'.remImage\').live(\'click\', function() {
if( size > 1 ) {
var postID = jQuery(\'#attID\').val()
delete_att( postID );
//jQuery(this).parents(\'.attchmt\').find(\'#attID\');
jQuery(this).parents(\'.attchmt\').detach();
size--;
}
return false;
});
});
添加额外字段的代码位于这两部分之间,但这些是我需要帮助的关键部分。目前,按照我在这里的编码方式,我收到了这个错误消息。idk wtf这意味着尽管lol。
Error: uncaught exception: [Exception... "Node cannot be inserted at the specified point in the hierarchy" code: "3" nsresult: "0x80530003 (NS_ERROR_DOM_HIERARCHY_REQUEST_ERR)" location: "http://code.jquery.com/jquery-1.4.4.min.js Line: 113"]
这就是我正在使用的完整代码。
https://gist.github.com/802465只是尝试向jQuery和Php传递信息,这对我来说总是很痛苦。
最合适的回答,由SO网友:jaredwilli 整理而成
我终于想出了怎么做,现在它100%起作用了!!
此外,它还使用了管理ajax。因此,单击Remove链接,会向函数发送一个ajax请求,该函数会删除附件,并返回消息,说明附件已被删除。
以下是我的解决方案的代码,首先是metabox的html:
<a class="remImage" href="#"><?php _e(\'Remove\');?></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\' ); ?>" />
下面是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();
}
发送附件ID和操作等,然后在收到ajax响应后从DOM中删除div的jQuery脚本是:
jQuery(\'.remImage\').live(\'click\', function() {
if( size > 1 ) {
jQuery.ajax({
type: \'post\',
url: ajaxurl,
data: {
action: \'delete_attachment\',
att_ID: jQuery(this).parents(\'.attchmt\').find(\'#att_remove\').val(),
_ajax_nonce: jQuery(\'#nonce\').val(),
post_type: \'attachment\'
},
success: function( html ) {
alert( html );
}
});
jQuery(this).parents(\'.attchmt\').detach();
size--;
}
return false;
});
我现在终于可以完成我认为完全不可能的事情了,在我尝试了很多次之后,每次都失败了。
它很快就会成为一个插件,我可以在任何网站上轻松使用,并提供简单的选项来定义要添加到的帖子类型。