下面是我的解决方案,用于创建一个带有临时标题的附件ID,以及它所附加到的post\\u父级。
我的jQuery psuedo代码,没有不必要的东西:
jQuery(\'.addImage\').live(\'click\', function() {
jQuery.ajax({
type: \'post\',
url: ajaxurl,
data: {
action: \'save_attachment\',
_ajax_nonce: jQuery(\'#nonce_add\').val(),
post_parent: jQuery(\'#post_ID\').val(),
attach_title: \'Attachment \' + size
},
success: function( res ) {
var attID = res.replace(/0$/i, \'\');
alert(\'Success: \' + attID);
}
});
size++;
return false;
});
我的管理员ajax。php函数和自定义挂钩:
function save_attachment() {
if ( $_POST[\'action\'] == \'save_attachment\' ) {
$post_title = $_POST[\'attach_title\'];
$post_parent = $_POST[\'post_parent\'];
$attach = array(
\'post_title\' => $post_title,
\'post_parent\' => $post_parent,
\'post_type\' => \'attachment\',
\'guid\' => \'\',
\'post_mime_type\'=> \'image\'
);
$attachID = wp_insert_attachment( $attach, false );
if( $attachID ) {
print_r( $attachID );
}
}
}
add_action( \'wp_ajax_save_attachment\', \'save_attachment\' );
看看我这里有什么,这里有一个与类的链接。addImage,单击它,它将运行ajax/php save\\u attachment()函数,返回我在我的元框(新文件的一组输入)中预先准备的代码块中使用的ID,返回的附件ID用作该代码块中隐藏的输入字段中的值。该块中还有一个保存按钮。
现在,有了这个ID,我就可以使用我已经完成的功能来保存(或更新)带有admin ajax的附件。php保存输入的数据和为每个数据选择的文件。如果您不需要空白附件,则每个附件的“删除”按钮还可以使用ID删除空白附件。
这将很快成为一个恶心的插件,一旦我把它作为一个自升式自定义元盒来使用。