在搜索解决方案时,我发现以下代码可在媒体页面上添加列:
add_filter ( "manage_upload_columns", \'upload_columns\' );
add_action ( "manage_media_custom_column", \'media_custom_columns\' , 0, 2 );
结果接近我想要的结果,但我需要在thickbox gallery选项卡上实现它——我想为媒体项添加一个“包含”复选框列。
我怎样才能做到这一点?
[update]
此复选框将用作库快捷码中的“包含”部分[gallery include="23,39,45"]
.
但是,短代码并没有写在帖子内容中。通过主题模板为每篇文章添加图库。
[update]为了保存从brasofilo脚本中获得的ID,我在短代码行中添加了name=“include\\u id”,并添加了以下内容:
add_action( \'edit_attachment\', array ($this,\'save_to_parent_meta\' ));
function save_to_parent_meta(){
if ( isset($_POST[\'include_ids\']) && !empty($_POST[\'include_ids\']) ) {
check_admin_referer(\'media-form\');
update_post_meta( $_REQUEST[\'post_id\'],\'include_ids\',$_POST[\'include_ids\']);
}
}
如果“includes\\u id”字段不为空,这将把id保存到父帖子的meta中。近乎完美。但是,当加载选项卡时,include\\u ids字段为空,并且取消选中all复选框。用户可能认为他们需要再次检查,即使他们不想进行更改。
最合适的回答,由SO网友:brasofilo 整理而成
在调查的过程中我发现了什么may be a duplicate, 但我真的不确定,因为这一个处理的是将值发送到其他地方。。。
在那里,我了解到有一个插件用于我已经编写的代码(Multiple Galleries) 它注入include
插入库时的属性。
尽管如此,一项有价值的活动和一家与StackOverflow\'呃。
应用程序将显示在“库”和“库”选项卡中
方法是复制/粘贴所选图像的值并手动使用
用法可以在自定义字段中,从中可以在某些模板页面中读取。
代码结果
代码
add_action( \'admin_head-media-upload-popup\', \'wpse_53803_script_enqueuer\' );
function wpse_53803_script_enqueuer()
{
if( $_GET[\'tab\'] == \'gallery\' || $_GET[\'tab\'] == \'library\' )
{
?>
<style>#media-upload th.order-head {width: 5%} #media-upload th.actions-head {width: 10%}</style>
<script type="text/javascript">
jQuery(document).ready( function($) {
/*
* Add Input Text Field
*/
$(\'<span>Copy this to use in the Gallery shortcode as the "include=image-ids" (<a href="http://codex.wordpress.org/Gallery_Shortcode" target="_blank">documentation</a>): </span><input type="text" id="shortcode" style="width:99%;clear:both" /><span></span><hr style="width:99%;opacity:.5" />\').prependTo(\'p.ml-submit:first\');
/*
* OnClick Populate/Depopulate Text Field
*/
$(document).on(\'change\',\'input[type="checkbox"][name^="gal-item"]\',function(){
var checkedIds = $(\'input[type="checkbox"][name^="gal-item"]:checked\').map(function(){
return parseInt($(this).prop(\'name\').replace(/gal-item-/,\'\'));
}).get();
$(\'#shortcode\').val(checkedIds.join(\',\'));
});
/*
* Iterate through the Media Items and Add a CheckBox
*/
$(\'.filename.new\').each(function(i,e){
var id = $(this).next(\'.slidetoggle\')
.find(\'thead\')
.attr(\'id\')
.replace(/media-head-/, \'\');
var filename = $(\'<label>Add to gal-list <input type="checkbox" name="gal-item-\'+id+\'" id="gal-item-\'+id+\'" value="" /></label>\')
.insertBefore($(this));
filename.css(\'float\',\'right\').css(\'margin\',\'12px 40px 0 0\');
});
});
</script>
<?php
}
}