web-dev-qa-db-ja.com

AJAXを使用してカスタム投稿タイプの投稿を別のカスタム投稿タイプの投稿編集画面に追加する方法

私は2つのカスタム投稿タイプを持っています:CDとトラック。それらのそれぞれはそれらに関連するいくつかのメタデータを持っています。

私がやろうとしているのは、CDポストが編集されているときにトラックポストをCDポストに追加することです。 CD編集ページに "Add Track"リンクがあります。それをクリックするとき、私はトラックのために指定される必要があるすべてのメタデータと一緒にトラック(カスタムポストタイプ)情報を求めるリンクの下に「新しいトラックフォーム」が現れるようにしたいです - 左側の[WPメニューから[トラックを追加]リンクをクリックしました。それが理にかなっていることを願っています。CD

私のCDとトラックのカスタム投稿タイプは次のように登録されています。 http://wordpress.Pastebin.com/Y6aagTVs

CDの編集ページに、私は次のリンクがあります<a class="addTrack" href="">Add Track</a>

AJAXと、 "New Track form"の追加を処理する機能がありません。これが私がこれまでに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);
});

そして、 "New Track Form"の挿入を処理する機能は、

// 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()関数についてどのように進めるべきかわかりません。本当に助けやヒントをいただければ幸いです。

ありがとう、ダーシャ

1
dashaluna

My_ajax_admin_add_track()関数の場合は、$ _POST配列からフォームフィールドデータを取得し、必要なデータを配列に入力してwp_insert_post()を呼び出し、次に投稿データを渡してwp_insert_post()を呼び出します。成功すれば、新しい投稿ID番号を返すはずです。

1
Mark