web-dev-qa-db-ja.com

メディアボックスを使用して画像IDを受け取るにはどうすればよいですか。

以下のコードはInsert to Postが押されたときに画像文字列を取得することを可能にします、しかし画像のIDを取得する正しい方法は何でしょうか?それで私はwp_get_attachment_image_srcを通してすべての情報を検索することができますか?

jQuery(document).ready(function() {

    var form_field;
    var upload_field_ID = '';

    jQuery( '.upload_image_button' ).click( function() {

        jQuery( 'html').addClass( 'Image' );

        upload_field_ID = jQuery(this).prev('input');
        form_field      = upload_field_ID.attr( 'name' );

        tb_show( '', 'media-upload.php?type=image&TB_iframe=true' );

        return false;

    });

    window.original_send_to_editor = window.send_to_editor;
    window.send_to_editor = function( html ) {

        if (form_field) {
            var image_url = jQuery( 'img', html ).attr( 'src' );
            upload_field_ID.val( image_url );
            tb_remove();
            jQuery( 'html').removeClass( 'Image' );
        } else {
            window.original_send_to_editor( html );
        }

    }

});
1
Mark

Send_to_editorから返されたHTMLフラグメントにhtml5データ属性としてIDを追加できるフィルタを追加することもできます。

public function image_to_editor($html, $id, $caption, $title, $align, $url, $size, $alt){
        $dom = new DOMDocument();
        @$dom->loadHTML($html);

        $x = new DOMXPath($dom);        
        foreach($x->query("//img") as $node){   
            $node->setAttribute("data-id", $id);
        }

        if($dom->getElementsByTagName("a")->length == 0){
            $newHtml = $dom->saveXML($dom->getElementsByTagName('img')->item(0));
        }else{
            $newHtml = $dom->saveXML($dom->getElementsByTagName('a')->item(0));
        }

        return $newHtml;
}

add_filter('image_send_to_editor', array(&$this,'image_to_editor'), 1, 8);

その後、window.send_to_editorのJavaScriptハンドラーで。

$('img',html).data('id'));

メディアのアップロードについても同じことができます。

2
Dale Sattler
<input type="submit" name="send[79]" id="send[79]" class="button" value="Insert into Post">

上記はそのボタンのマークアップの例です。 nameフィールドとidフィールドの両方にイメージIDが含まれていることに注目してください。

だからjQueryを使えばあなたはそれを読むことができます。

$("...").click(function(){
    var buttonID = $(this).attr("name");
    buttonID = parseInt(buttonID.replace("send[", "").replace("]", ""));
});
1
Brady
jQuery(document).ready(function() {

    var form_field;
    var upload_field_ID = '';

    jQuery( '.upload_image_button' ).click( function() {

        jQuery( 'html').addClass( 'Image' );

        upload_field_ID = jQuery(this).prev('input');
        form_field      = upload_field_ID.attr( 'name' );

        tb_show( '', 'media-upload.php?type=image&amp;TB_iframe=true' );

        return false;

    });

    window.original_send_to_editor = window.send_to_editor;
    window.send_to_editor = function( html ) {

        if (form_field) {
            var class_string    = jQuery( 'img', html ).attr( 'class' );
            var image_url       = jQuery( 'img', html ).attr( 'src' );
            var classes         = class_string.split( /\s+/ );
            var image_id        = 0;

            for ( var i = 0; i < classes.length; i++ ) {
                var source = classes[i].match(/wp-image-([0-9]+)/);
                if ( source && source.length > 1 ) {
                    image_id = parseInt( source[1] );
                }
            }

            alert(image_id); // <---- THE IMAGE ID

            upload_field_ID.val( image_url );
            tb_remove();
            jQuery( 'html').removeClass( 'Image' );
        } else {
            window.original_send_to_editor( html );
        }

    }

});
1
Mark

それをチェックしてください私のために見つけるの作品。重要なことは、関数tb_showは、誰がリターンを売りにするかを知る必要があるということです。それであなたはただpost_idを得てそれを新しいものであればあなたがそれを新しいもののようにそれを渡すtb_showへのURLパスに入れるだけです。

だから私はあなたに私の解決策を見せるだけであなたはよりよく理解することができますがちょっと..あなたがどのように知っているとき簡単

jQuery('#uploadPDF').click(
        function() 
        {

             window.send_to_editor = function(html){
                 fileurl = html.toString();
                 jQuery('#path_PDF').val(fileurl);                  
                 tb_remove(); 
            }
             var postId = location.href;
             var startPosition = postId.indexOf("post=");
             var url;

             if (startPosition != -1)
             {
                var postId = postId.substr(startPosition);
                var endPosition = postId.indexOf("&");
                var postId = postId.substring(5, endPosition);//5 POUR POST=

                url = 'media-upload.php?post_id=';

                url = url.concat(postId,'&amp;type=image&amp;TB_iframe=true');
             }
             else
             {
                url = 'media-upload.php?post-new.php?&amp;type=image&amp;TB_iframe=true';
             }


             tb_show( '', url);
             return false;
        }
    );
0
garrybob