Как создать идентификатор вложения с помощью Ajax submit? Нет обновления страницы


Я знаю, что делал это раньше, в любом случае, с формой публикации на веб-интерфейсе, которая использовала Ajax для отправки данных формы в php-скрипт, который использовал wp_insert_post(), а затем перенаправлял на этот пост после отображения сообщения об успешном выполнении, но я не могу понять, как это сделать с вложениями.

То, что я пытаюсь сделать, немного сложно объяснить. Дай мне попробовать. У меня есть метабокс, в котором вы можете добавлять/удалять вложения с помощью jquery, чтобы добавить другой набор входных данных или удалить их, а затем удалить этот файл с вашего сайта. Эта штука работает. Что я хотел бы сделать, так это, когда вы добавляете новый набор входных данных, заполняете информацию, выбираете файл изображения для загрузки, затем нажимаете Сохранить для этого набора входных данных (у каждого набора есть своя кнопка сохранения) кнопка сохранения имеет скрипт Ajax, который отправляет данные в post.php или что бы ни происходило, когда вы нажимаете кнопку Опубликовать.

Если я заполню пару полей вложений и нажму Опубликовать, мое действие для "save_post" будет использовано для сохранения этих данных. Я хочу создать функция, которая использует admin-ajax.php и специальный крючок. В настоящее время у меня есть функция удаления, которая использует admin-ajax.php чтобы удалить файл вложения из публикации и медиатеки.

Как я могу создать функцию, которая добавляет файл. Я так запуталась, лол.

Author: jaredwilli, 2011-02-08

1 answers

Вот мое решение для создания идентификатора вложения с временным заголовком и post_parent, к которому он прикреплен.

Мой код 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;
    });

Мой admin-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' );

Смотрите, что у меня здесь есть, есть ссылка с class.addImage, вы нажимаете на нее, и она запускает функцию ajax/php save_attachment(), которая возвращает идентификатор, который я использую в фрагменте кода, который я добавляю в свой метабокс (группа входных данных для новый файл), и возвращенный идентификатор вложения используется в качестве значения в скрытом поле ввода в этом фрагменте кода. В этом фрагменте также есть кнопка сохранения.

Теперь, учитывая этот идентификатор, я могу использовать свою уже завершенную и работающую функцию для сохранения (или обновления) вложений с помощью admin-ajax.php сохранение введенных данных и файла, выбранного для каждого из них. Кнопка удалить для каждого из них также может использовать идентификатор для удаления пустых вложений, если они вам не нужны.

Это скоро будет плагин для больной задницы, как только я заставлю его работать как настраиваемый метабокс.

 0
Author: jaredwilli, 2011-02-09 03:55:29