web-dev-qa-db-ja.com

編集ポストでAjaxを使用したカスタムメタボックス - Stuck

複数のテキストフィールドを持つカスタムメタボックスを作成しようとしています。最初はテキストボックスが1つあり、次に[新規追加]ボタンをクリックすると別のテキストボックスが追加されます(Ajaxを使用します。作成するテキストボックスを公開または更新する必要はありません)。私は以下のコード(下記)を使っていますが、うまくいきません。私は完全に立ち往生しています。本当に助けが必要です。誰かが私がこれを理解するのを手伝うことができるならば私はいくらかの現金を寄付する気があります。

http://Pastebin.com/usRhiJJ4

2
Matthew Ruddy

テキストボックスを動的に追加することを目的としていても、投稿を保存/更新することをユーザーに要求する場合、AJAXを使用する必要はまったくありません。

テキストフィールドに適切な名前を付けて値の配列がPOSTされるようにしてから、保存アクションでそれを処理します。

この配列を単一のpostメタキーに保存すると便利な場合があるので、それをループ処理してメタボックスを出力することができます。

'slideshow_metabox'のようなものを囲んでいる<div>にIDを与えます。

初期テキストボックスを次のように設定します。

<input type="text" style="position: relative; right: 0; width: 85%;" name="slideshow[]" value="<?php echo $value; ?>" />

「追加ボタン」のクリックを次のように変更します。

function() {
    jQuery('#slideshow_metabox').append('<input type="text" style="position: relative; right: 0; width: 85%;" name="slideshow[]" value="" />');
}

お役に立てれば。

9
Jeff Stieler

これが私が5-6個のカスタムの異なる種類のメタボックスで使ったことを書いたスクリプトです。フィールドの追加と削除のオプションが大好きです。バックグラウンドでadmin-ajax.phpファイルに投稿するだけでも、投稿を保存/公開するとWPは非常に遅くなる可能性があるため、作業が大幅に速くなります。そしてもっと早くなりましょう。

http://new2wp.com/snippet/jquery-add-remove-extra-input-form-fields/

2
jaredwilli