如何使用AJAX Submit创建附件ID?无页面刷新

时间:2011-02-08 作者:jaredwilli

我知道我以前也这样做过,使用一个前端post表单,它使用Ajax将表单数据发送到一个php脚本,该脚本使用wp\\u insert\\u post(),然后在显示成功消息后重定向到该帖子,但我不知道如何使用附件。

我想做的是有点难以解释。让我试试。我有一个metabox,您可以使用jquery添加/删除附件,以添加或删除另一组输入,然后从站点中删除该文件。那东西有用。我想做的是,当您添加一组新的输入时,填写信息,选择要上载的图像文件,然后单击该组输入的保存(每组都有自己的保存按钮)。保存按钮有一个Ajax脚本,用于将数据发送到post。php或单击“发布”按钮时发生的任何事情。

如果我填写两个附件字段并单击发布,我的“save\\u post”操作将用于保存该数据。我想创建一个使用管理ajax的函数。php和自定义挂钩。目前,我有一个使用admin ajax的delete函数。php从帖子和媒体库中删除附件文件。

如何创建添加文件的函数。我很困惑,哈哈。

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

下面是我的解决方案,用于创建一个带有临时标题的附件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删除空白附件。

这将很快成为一个恶心的插件,一旦我把它作为一个自升式自定义元盒来使用。

结束