我已经实现了媒体上传到我的自定义类别图像插件,我想知道我是否可以强制它使用我只为类别设置的自定义图像大小。
。。。所以在上面的屏幕截图中,我希望大小列只包含“类别图像(80 x 80)”并自动选择。
我在列表中添加“类别图像”的方式如下所示
add_filter( \'image_size_names_choose\', \'custom_image_sizes_choose\' );
function custom_image_sizes_choose( $sizes ) {
$custom_sizes = array(
\'category-image\' => \'Category Image\'
);
return array_merge( $sizes, $custom_sizes );
}
如果在该函数中,我只返回
$custom_sizes
它将影响每个媒体上传程序的上下文,例如帖子->添加媒体,而不仅仅是在设置我的分类图像时。
下面是我如何在插件中实现媒体上传器
add_action( \'admin_init\', \'cat_image_options_setup\' );
//------------------------------------------------
// Setup category image media picker
//------------------------------------------------
function cat_image_options_setup() {
global $pagenow;
if ( \'media-upload.php\' == $pagenow || \'async-upload.php\' == $pagenow ) {
// Now we\'ll replace the \'Insert into Post Button inside Thickbox\'
add_filter( \'gettext\', \'replace_thickbox_text\' , 1, 2 );
}
}
//------------------------------------------------
// Replace the media picker button text
//------------------------------------------------
function replace_thickbox_text( $translated_text, $text ) {
if ( \'Insert into Post\' == $text ) {
$referer = strpos( wp_get_referer(), \'cat_image_settings\' );
if ( $referer != \'\' ) {
return __( \'Add as a category image\', \'ddr\' );
}
}
return $translated_text;
}
有没有办法做到这一点?谢谢
如果有人知道更好的方法来实现媒体上传器,请让我知道。现在,它以某种方式使用了旧的媒体上传器窗口,而与POST->Add media中的窗口不同。
SO网友:jaysauce
呼叫时add_filter( \'image_size_names_choose\', \'custom_image_sizes_choose\' );
运用你的调查技巧,看看打电话给if(thisweretrue) add_filter( \'image_size_names_choose\', \'custom_image_sizes_choose\' );
因为我不知道你的具体情况。
实际上,我可以使用您的解决方案来设置自定义尺寸,以满足我的需要。在我的场景中,我创建了一个自定义元框,在该自定义元框中,我有一个javascript onclick块,该块块将被调用,如下所示uploadimg_pt(\'mymetaboxfieldname\');
. 我用于从媒体库获取图像的Javascript如下所示:
function uploadimg_pt(pid) {
window.send_to_editor = function(html) {
imgurl = jQuery(\'img\',html).attr(\'src\');
jQuery(\'#\'+pid).val(imgurl);
tb_remove();
}
formfield = jQuery(\'#\'+pid).attr(\'name\');
tb_show(\'\', \'media-upload.php?type=image&pid=\'+pid+\'&TB_iframe=true\');
return false;
}
使用此javascript时,它会在一个灯箱中打开媒体管理器,生成iframe。然后,它在函数调用的参数中采用该pid,并在生成iframe时将其放入URL中。在生成的iframe中,它还将调用模板中的函数文件。所以我在函数文件中设置了一个if语句,如下所示:
if($_GET[\'pid\'] == "mymetaboxfieldname"){
add_filter( \'image_size_names_choose\', \'custom_image_size_large\' );
}
function custom_image_size_large( $sizes ) {
$custom_sizes = array(
\'large\' => \'Large\'
);
return $custom_sizes;
}
因为我只需要那件大号的,所以我就退回了那件。
我不知道你的具体情况,但我希望这能帮助你弄清楚自己需要什么。