28

私はWordPressの新しいメディアマネージャーで遊んでいて、それを楽しんでいましたが、壁に頭をぶつけているところまで来ました。

いくつかの画像を保存したいカスタムメタボックスがあり(これは非表示の入力であり、現在IDを保存していますが、画像オブジェクトでもかまいません)、AJAX呼び出しを行ってサムネイルを表示します。その後、ユーザーが並べ替えることができるようにドラッグ可能にしました(必ずしも背景だけに関連するわけではありません)。

私の問題は、メディアマネージャーを開いたときに画像が選択されていないため、ユーザーがギャラリー内の画像を編集する場合は、すべてをもう一度選択する必要があることです。

私が理解しようとしているのは、現在の画像が事前に選択されている状態でメディアマネージャーを開く方法です。

したがって、大まかに言って、私のコードは次のようになります

jQuery('#myButton').click(function(e) {
  e.preventDefault();
  frame = wp.media({
    title : 'My Gallery Title',
    multiple : true,
    library : { type : 'image'},
    button : { text : 'Insert' },
  });
  frame.on('close',function() {
    // get selections and save to hidden input plus other AJAX stuff etc.
  }
  frame.open();
});

私の考えでは、フレームに渡すパラメータ(おそらく、画像のJSONオブジェクトか、次のイベントを作成する必要があります)のいずれかが必要です。

frame.on('open', function() {
  // Set selected images
}

しかし、私は両方の方法を試しましたが、どこにも行きません。

「注目の画像」を変更すると、現在の画像が選択された状態でライブラリに移動するため、可能と思われます。コアコードをまだ十分に理解できていないので、他の誰かが理解していることを願っています。

4

3 に答える 3

43

コアを少し勉強した後、ここでの答えは本当に非常に簡単です。

オブジェクトのオープンイベントをリッスンし、wp.media状態を取得し、IDを使用して添付オブジェクトを作成し、それらを選択に追加します。

frame.on('open',function() {
  var selection = frame.state().get('selection');
  var ids_value = jQuery('#my_field_id').val();

  if(ids_value.length > 0) {
    var ids = ids_value.split(',');

    ids.forEach(function(id) {
      attachment = wp.media.attachment(id);
      attachment.fetch();
      selection.add(attachment ? [attachment] : []);
    });
  }
});

これは、単一の画像だけでなく複数の画像を選択する場合にも機能し、上記のコードを使用して、カンマで区切って単一のテキスト/非表示フィールドに値を保存したことを前提としています。

于 2012-12-20T00:11:27.833 に答える
1

本当の答えではありませんが、私が気づいたこと

コードを使用するとframe.open( console.log('open') )、console.log がトリガーされます。
もう一方frame.on('open', function() { console.log('on->open')})はそうではありません。

投稿編集ページを見たとき。(アイキャッチ画像がすでに設定されている場合)。注目の画像ウィンドウを開くと、興味深いことがいくつか起こります。

  1. WP は 3 つの ajax 呼び出しを行います。1 番目と 3 番目には注目の img id が含まれています。2番目はコードと同じです。

  2. ポップアップが読み込まれると、注目の画像が表示され、残りの画像よりも先に読み込まれます。それらが表示されると、注目の画像が正しい順序で配置されます。

  3. dom タブで firebug を調べたところ、varwp.media.model.settings.post.featuredImageIdが注目の画像の値を保持している (それを待っている) ことがわかりました。

これが何らかの形で役立つことを願っています。

于 2012-12-19T09:25:55.140 に答える
0

私はそれらの男がそれを行うことができたと思います: https : //wordpress.stackexchange.com/questions/76125/change-the-default-view-of-media-library-in-3-5/76213#76213私のために働きます。投稿/編集、投稿/新規のフッターにjqueryがありますが、それはうまくいきません:(

于 2012-12-19T15:58:32.127 に答える