Как добавить сообщение пользовательского типа в другой экран редактирования сообщения пользовательского типа с помощью AJAX?


У меня есть два пользовательских типа записей: CD и трек. У каждого из них есть некоторые метаданные, связанные с ними.

Что я пытаюсь сделать, так это добавить записи треков в запись на компакт-диске, когда запись на компакт-диске редактируется. На странице редактирования компакт-диска у меня есть ссылка "Добавить трек". При нажатии на нее я хотел бы, чтобы под ссылкой появилась "Новая форма трека", в которой будет запрашиваться информация о треке (пользовательский тип записи), а также все метаданные, которые необходимо указать для трека - как если бы "Добавить трек" ссылка была нажата в левом меню WP. Надеюсь, это имеет смысл.Компакт-диск

Мои типы пользовательских записей компакт-дисков и дорожек зарегистрированы следующим образом: http://wordpress.pastebin.com/Y6aagTVs

На странице редактирования компакт-диска у меня есть следующая ссылка <a class="addTrack" href="">Add Track</a>

Мне не хватает AJAX и функции, которая будет обрабатывать добавление "Новой формы трека". Вот что у меня есть до сих пор в функции AJAX:

// Add Tracks   
$("a.addTrack").click(function () {
    opts = {
        url: ajaxurl, // ajaxurl is defined by WordPress and points to /wp-admin/admin-ajax.php
        type: 'POST',
        async: true,
        cache: false,
        dataType: 'json',
        data:{
            action: 'track_add', // Tell WordPress how to handle this ajax request
        },
        success: function(response) {
            return false;
        },
        error: function(xhr,textStatus,e) {  // This can be expanded to provide more information
            alert("There was an error adding a track.");
            return false;
        }
    };
    $.ajax(opts);
});

И функция, которая будет обрабатывать вставку "Новой формы дорожки" является

// Add Tracks
add_action('wp_ajax_track_add', 'my_ajax_admin_add_track');
function my_ajax_admin_add_track() {
}

Я не знаю, как продолжить о функциях AJAX и my_ajax_admin_add_track(). Буду очень признателен за любую помощь и советы!!!

Большое спасибо, Даша

Author: dashaluna, 2010-12-22

1 answers

Для вашей функции my_ajax_admin_add_track() возьмите данные поля формы из массива $_POST, заполните необходимые данные в массиве, чтобы вызвать функцию wp_insert_post(), затем вызовите функцию wp_insert_post(), передав ей данные post. В случае успеха он должен вернуть новый идентификационный номер поста.

 1
Author: Mark, 2010-12-23 04:23:53