一个小的源代码,可能是用于创建解决方案的插件。首先是php部分,其中包括媒体管理器中按钮的javascript。是一个更有用的答案,但@One-Trick-Pony的答案是create和正确的方向以及JS解决方案。
查看图像上的结果:
如果大小不是默认大小,则生成的快捷码:
钩子print_media_templates
是包含按钮和标记的正确位置。还有一个脚本,有附加控件的解决方案。
class Custom_Gallery_Setting {
/**
* Stores the class instance.
*
* @var Custom_Gallery_Setting
*/
private static $instance = null;
/**
* Returns the instance of this class.
*
* It\'s a singleton class.
*
* @return Custom_Gallery_Setting The instance
*/
public static function get_instance() {
if ( ! self::$instance )
self::$instance = new self;
return self::$instance;
}
/**
* Initialises the plugin.
*/
public function init_plugin() {
$this->init_hooks();
}
/**
* Initialises the WP actions.
* - admin_print_scripts
*/
private function init_hooks() {
add_action( \'wp_enqueue_media\', array( $this, \'wp_enqueue_media\' ) );
add_action( \'print_media_templates\', array( $this, \'print_media_templates\' ) );
}
/**
* Enqueues the script.
*/
public function wp_enqueue_media() {
if ( ! isset( get_current_screen()->id ) || get_current_screen()->base != \'post\' )
return;
wp_enqueue_script(
\'custom-gallery-settings\',
plugins_url( \'js/custom-gallery-setting.js\', __FILE__ ),
array( \'media-views\' )
);
}
/**
* Outputs the view template with the custom setting.
*/
public function print_media_templates() {
if ( ! isset( get_current_screen()->id ) || get_current_screen()->base != \'post\' )
return;
?>
<script type="text/html" id="tmpl-custom-gallery-setting">
<label class="setting">
<span>Size</span>
<select class="type" name="size" data-setting="size">
<?php
$sizes = apply_filters( \'image_size_names_choose\', array(
\'thumbnail\' => __( \'Thumbnail\' ),
\'medium\' => __( \'Medium\' ),
\'large\' => __( \'Large\' ),
\'full\' => __( \'Full Size\' ),
) );
foreach ( $sizes as $value => $name ) { ?>
<option value="<?php echo esc_attr( $value ); ?>" <?php selected( $value, \'thumbnail\' ); ?>>
<?php echo esc_html( $name ); ?>
</option>
<?php } ?>
</select>
</label>
</script>
<?php
}
}
// Put your hands up...
add_action( \'admin_init\', array( Custom_Gallery_Setting::get_instance(), \'init_plugin\' ), 20 );
下面的源代码是javascript,在php中的示例源代码中
custom-gallery-setting.js
/**
* Custom Gallery Setting
*/
( function( $ ) {
var media = wp.media;
// Wrap the render() function to append controls
media.view.Settings.Gallery = media.view.Settings.Gallery.extend({
render: function() {
media.view.Settings.prototype.render.apply( this, arguments );
// Append the custom template
this.$el.append( media.template( \'custom-gallery-setting\' ) );
// Save the setting
media.gallery.defaults.size = \'thumbnail\';
this.update.apply( this, [\'size\'] );
return this;
}
} );
} )( jQuery );