如何使用媒体盒接收图像ID?

时间:2012-02-09 作者:Mark

下面的代码允许我在以下情况下检索图像字符串: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 );
        }

    }

});

4 个回复
SO网友:Dale Sattler

您还可以添加一个过滤器,将ID作为html5数据属性添加到从send\\u to\\u编辑器返回的HTML片段中。

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);
然后在窗口的javascript处理程序中。将\\u发送到\\u编辑器;

$(\'img\',html).data(\'id\'));
您也可以对媒体上载执行相同的操作。

SO网友:Scott

<input type="submit" name="send[79]" id="send[79]" class="button" value="Insert into Post">
以上是该按钮的标记示例。注意如何nameid 两个字段都包含图像ID。

因此,使用jQuery您可以阅读它。

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

SO网友:Mark
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 );
        }

    }

});
SO网友:garrybob

看看它的作品为我找到。问题是,函数tb\\u show需要知道是谁做出了回报。因此,您只需获取post\\u id并将其放在tb\\u 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;
        }
    );

结束

相关推荐

Give Children Unique ID's

有没有办法给每个wordpress子级(子类别UL列表)唯一的ID?我正在为子类别创建一个下拉列表,我想定位它们,但是:nth-child 尚未得到所有内容的支持。