以下のコードは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 );
}
}
});
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'));
メディアのアップロードについても同じことができます。
<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("]", ""));
});
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 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 );
}
}
});
それをチェックしてください私のために見つけるの作品。重要なことは、関数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,'&type=image&TB_iframe=true');
}
else
{
url = 'media-upload.php?post-new.php?&type=image&TB_iframe=true';
}
tb_show( '', url);
return false;
}
);