web-dev-qa-db-ja.com

1回の投稿で2つの異なるメタボックスに対して画像ライブラリから画像を選択するときに多すぎる再帰エラー

これに対する解決策があるはずです。私はメディアライブラリから画像を選択するためにこのソリューションを使用しています。 http://www.webmaster-source.com/2010/01/08/using-the-wordpress-uploader-in-your-plugin-or-theme/

問題:

カスタム投稿タイプ「商品」に2つのメタボックスを使用しています。

1つは2つのメタフィールドで構成されています。2つは製品の写真を2つ追加するためのものです。2つ目はこの製品の簡単なギャラリーを作成するためのものです。

それぞれにtb_showとwindow.send_to_editorがあります。

重要なのは、最初のメタボックスまたは2番目のメタボックスが1つだけ登録されている場合、すべてがうまく機能するということです。両方とも登録されている場合、add_meta_boxで最後に登録された、「投稿に挿入」ボタンを押したときのエラーを「やり直し過ぎ」にします。

これを解決するには?

これは、異なる種類の画像を追加するために2つのメタボックスをポストに含めることが非常に重要です。また、デフォルトの[投稿する画像の挿入]が機能するはずです。

たぶん、誰かがこのためのクラスを持っているのですが、問題は1つの投稿ページに2つのoriginal_send_to_editor関数が登録されている場合です。

3
jam

私はあなたが人々がその物語へのコメントで述べた問題に遭遇していると思います。他の誰かがそれについてここに投稿しました:

http://www.theenglishguy.co.uk/2010/01/24/multiple-media-uploads-in-wordpress-functions-php/

基本的に、そのサイトからのJavaScriptはもっとこのようになるように修正されるべきです:

jQuery(document).ready(function() {

  var formlabel = 0;
  var old_send_to_editor = window.send_to_editor;
  var old_tb_remove = window.tb_remove;

  jQuery('.upload_image_button').click(function(){
    formlabel = jQuery(this).parent();
    tb_show('', 'media-upload.php?type=image&TB_iframe=true');
    return false;
  });

  window.tb_remove = function() {
    formlabel = 0;
    old_tb_remove();
  }

  window.send_to_editor = function(html) {
    if(formlabel){
      imgurl = jQuery('img',html).attr('src');
      formlabel.find('input[type="text"]').value(imgurl);
      tb_remove();
    } else {
      old_send_to_editor();
    }
  }
});

そこから、あなたがする必要があるのは、すべてのボタンがクラス'upload_image_button'を持っていることを確認すること、そしてボタンが対応するテキストボックスへの兄弟であり、同じ親要素に他のアップロードフォームがないことです。

1
John P Bloch