在Meta Box中添加来自Thickbox的PDF的URL

时间:2012-02-02 作者:Simon

我已经创建了一些关于我正在处理的主题的页面元框。

想法是有一个输入字段,然后有一个按钮来上传文件。

元框工作正常。

当我点击按钮时,它会触发thickbox。

这也很好用。

然后我可以上传媒体或为库选择媒体。

一点jQuery需要在ThickBox中获取所选文件的URL,并将其放在正确的字段中。

我有一个脚本可以很好地处理图像,但它不能处理PDF文件。

//lauch on click to appropriate button
jQuery(\'#upload_requestform_button\').click(function() {

    // keep copy of the original send to editor
    original_send_to_editor = window.send_to_editor;


    //new send_to_editor function
    window.send_to_editor = function(html) {
    // i guess this where i\'m wrong
    imgurl = jQuery(\'img\',html).attr(\'src\');
    // sending the data to the input
    jQuery(\'#box_requestform_meta\').val(imgurl);
    tb_remove();
    // restore send_to_editor to post content 
    window.send_to_editor = original_send_to_editor;
   }
    // loads thickbox
    formfield = jQuery(\'#box_requestform_meta\').attr(\'name\');
    tb_show(\'\', \'media-upload.php?type=image&TB_iframe=true\');
    return false;
  });
这是HTML部分:

<label for="ala_request_form_ID"><?php _e( "Request Form", \'Request Form\' ); ?></label><br />
<input id="box_requestform_meta" type="text" size="80%" name="box_requestform_meta" value="<?php echo esc_attr( get_post_meta( $object->ID, \'box_requestform_meta\', true ) ); ?>" />
<input id="upload_image_button" type="button" value="Upload Request Form" />
我找不到太多关于如何使用thickbox的文档或示例,非常感谢您的帮助^^

2 个回复
SO网友:turbonerd

这一行。。。

imgurl = jQuery(\'img\',html).attr(\'src\');

表示jQuery正在获取image. 正如您所猜测的,这对PDF文件不起作用。

你可能需要做的是id 而不是附件的。您是否可以使用thickbox的HTML源代码更新您的原始答案?我们也许可以从某处找到ID并修改jQuery行。

获得附件ID后,可以使用以下代码在HTML中显示URL,无论是图像还是任何其他类型的附件:

<?php wp_get_attachment_url( $id ); ?>

希望这有帮助。

SO网友:Simon

我找到了方法(从那里的一条有用的评论中http://www.webmaster-source.com/2010/01/08/using-the-wordpress-uploader-in-your-plugin-or-theme/)

//lauch on click to appropriate button
jQuery(\'#upload_requestform_button\').click(function() {

// keep copy of the original send to editor
original_send_to_editor = window.send_to_editor;


//new send_to_editor function
window.send_to_editor = function(html) {
// just take the href attribute
hrefurl = jQuery(html).attr(\'href\');
// sending the data to the input
jQuery(\'#box_requestform_meta\').val(hrefurl);
tb_remove();
// restore send_to_editor to post content 
window.send_to_editor = original_send_to_editor;
}
// loads thickbox
formfield = jQuery(\'#box_requestform_meta\').attr(\'name\');
tb_show(\'\', \'media-upload.php?type=image&amp;TB_iframe=true\');
return false;
});

结束