Only Uploader
下面是一个示例代码,仅适用于后期编辑页面。如果您还将在其他页面上使用,请包括该函数
wp_enqueue_media()
, 请参见下一个标题。
jQuery(document).ready(function($) {
var _custom_media = true,
_orig_send_attachment = wp.media.editor.send.attachment;
$(\'.stag-metabox-table .button\').click(function(e) {
var send_attachment_bkp = wp.media.editor.send.attachment;
var button = $(this);
var id = button.attr(\'id\').replace(\'_button\', \'\');
_custom_media = true;
wp.media.editor.send.attachment = function(props, attachment) {
if ( _custom_media ) {
$("#"+id).val(attachment.url);
} else {
return _orig_send_attachment.apply( this, [props, attachment] );
};
}
wp.media.editor.open(button);
return false;
});
$(\'.add_media\').on(\'click\', function() {
_custom_media = false;
});
});
Short explanation of Media Manager
<首先包括相关脚本,使用核心功能:
wp_enqueue_media();
该函数设置所有相关设置,本地化菜单文本,并加载所有适当的javascript文件。
您可以通过添加自定义脚本wp_enqueue_script()
.
// Also adds a check to make sure `wp_enqueue_media` has only been called once.
// @see: http://core.trac.wordpress.org/ticket/22843
if ( ! did_action( \'wp_enqueue_media\' ) )
wp_enqueue_media();
还为自定义标头添加默认脚本:
wp_enqueue_script( \'custom-header\' );
这将创建一个图像选择框,并将其绑定到界面元素,例如按钮或链接。然后,它调用一个url或我们使用所选图像id所做的选择。这与选择主题自定义标题图像时使用的脚本相同。
将按钮添加到媒体管理器:
<?php
$modal_update_href = esc_url( add_query_arg( array(
\'page\' => \'my_media_manager\',
\'_wpnonce\' => wp_create_nonce( \'my_media_manager_options\' ),
), admin_url( \'upload.php\' ) ) );
?>
<p>
<a id="choose-from-library-link" href="#"
data-update-link="<?php echo esc_attr( $modal_update_href ); ?>"
data-choose="<?php esc_attr_e( \'Choose a Default Image\' ); ?>"
data-update="<?php esc_attr_e( \'Set as default image\' ); ?>"><?php _e( \'Set default image\' ); ?>
</a> |
</p>
最后,您需要添加一些代码来处理我们将传递到数据更新链接url的图像id。
// Add to the top of our data-update-link page
if ( isset($_REQUEST[\'file\']) ) {
check_admin_referer( \'my_media_manager_options\' );
// Process and save the image id
$options = get_option( \'my_media_manager_options\', TRUE );
$options[\'default_image\'] = absint( $_REQUEST[\'file\'] );
update_option( \'my_media_manager_options\', $options );
}
Sources and hints: