你对这个问题的分析完全正确,即使你使用的术语有点混乱。没有“图像实例”这样的东西:一旦将图像插入帖子,修改原始图像标题或标题(例如通过媒体菜单)将不会修改插入帖子的图像。要说服您,请单击“文本”选项卡并查看生成的HTML代码。
以下是使用“添加媒体”按钮插入图像时发生的情况:
单击“插入到帖子”时,会从媒体模式获取数据以生成一些HTML代码:<img>
根据您选择的大小使用正确的源标记,标题为alt text,标题为caption(如果有)。此代码插入到TinyMCE编辑器的正确位置(通过“文本”选项卡查看)
在“视觉”选项卡中,将创建一个“视图”,以表示视觉编辑器中的图像。此视图显示图像和两个按钮:编辑和删除。此视图允许您在不接触HTML代码的情况下,直观地调整图像大小和更改其他一些参数。
因此,如果要添加一些自定义数据(不要将其称为自定义字段,因为它未附加到任何附件帖子),则必须将其插入此HTML代码中,然后修改视图以允许直观地更改此数据。如果我能很好地理解您的问题,那么您需要添加数据,以在页面上以特定的方式定位图像。您可以为此使用自定义类。
以下是生成的HTML代码:
<img class="alignnone size-medium wp-image-10" src="http://myserver.com/wp-content/uploads/2014/08/opensource-300x259.gif" alt="opensource" width="300" height="259" />
您希望在“大小”下拉列表中有一个“响应”选项,使代码看起来像:
<img class="alignnone size-responsive wp-image-10" src="http://myserver.com/wp-content/uploads/2014/08/opensource-300x259.gif" alt="opensource" />
下面是如何实现这一点:创建一个插件,将一个新脚本排入编辑后页面的队列。
add_action( \'admin_enqueue_scripts\', \'wpse16975_custom_image_view\');
function wpse16975_custom_image_view($hook){
if($hook == \'post.php\'){
wp_enqueue_script( \'custom_image_view\', plugin_dir_url( __FILE__ ) . \'/customView.js\', array( \'media-views\' ));
}
}
然后是customView。js应如下所示:
(function($, _){
var media = wp.media;
var origImageDetails = media.view.ImageDetails;
media.view.ImageDetails = origImageDetails.extend({
initialize: function() {
origImageDetails.prototype.initialize.apply( this, arguments );
this.on( \'post-render\', this.responsiveSize );
this.listenTo( this.model, \'change:size\', this.setReponsiveSize );
this.initSize = this.model.get(\'size\');
},
responsiveSize: function(){
// add a "Reponsive" option to the Size dropdown setting
var $opt = $(document.createElement(\'option\')).attr(\'value\', \'responsive\').text(\'Responsive\');
if(this.initSize == \'responsive\') $opt.attr(\'selected\', \'selected\');
this.$(\'.embed-media-settings select.size\').append($opt);
},
setReponsiveSize: function(){
// remove width and height
if(this.model.get(\'size\') == \'responsive\') this.controller.image.set({width:null, height:null}, {silent:true});
}
});
}(jQuery, _));
结果如下: