向媒体上传器添加新的图像大小,以便用户可以插入帖子?

时间:2011-01-25 作者:Michelle

我想为上传的图像创建一个额外的大小,然后我的用户可以“插入帖子”。我知道add\\u image\\u size()会添加一个新的图像大小,我可以在我的主题中使用,但在媒体上载屏幕上无法使用该新大小。

有没有办法在屏幕上显示新的尺寸,以便人们在添加/编辑帖子时可以使用?我有一个好的主题,需要的不仅仅是默认的3种尺寸+原版。

谢谢

3 个回复
SO网友:Michelle

刚刚发现一个新插件,它似乎与我上面描述的完全一样:

http://wordpress.org/extend/plugins/additional-image-sizes-zui/

希望这对别人有帮助!

SO网友:MathSmath

我破解了代码,但似乎没有办法做到这一点。

WP在渲染这些单选按钮时迭代的缩略图大小列表是硬编码的,似乎没有任何过滤器或操作可供挂钩。

这真的很奇怪。我完全希望有办法做到这一点。

人们是否需要在任何给定的时间将您的自定义尺寸插入到帖子中?或者其中一些只在模板中使用?我想我要问的是,是否可以只将一个或多个默认大小(拇指、中、大)设置为帖子中添加的大小,并将任何其他版本保存为自定义大小?知道我的意思吗?

SO网友:Howdy_McGee

即使我们创建了图像大小,我们也需要额外的代码将其添加到可用大小的媒体上传器下拉列表中。首先,让我们注册大小。我们可以使用initafter_setup_theme 挂钩:

function theme_init() {
    add_image_size( \'banner_image\', 1200, 200, true );
}
add_action( \'init\', \'theme_init\' );
我们需要使用image_size_names_choose 钩子将新尺寸添加到可用尺寸中。这个Developer Resources suggests 使用以下各项:

/**
 * @param Array $default_sizes - Array( \'size_slug\' => \'Size Title\' )
 *
 * @return Array $default_sizes
 */
function image_sizes_to_mediapicker( $default_sizes ) {
    return array_merge( $default_sizes, array(
        \'banner_image\' => __( \'Banner Image\' ),
    ) );
}
add_filter( \'image_size_names_choose\', \'image_sizes_to_mediapicker\' );
上面的操作很好,但也许我们可以将其自动化一点。下面假设任何额外的大小都是用下划线命名的,因此它可能不是与添加自己大小的插件一起工作的最佳解决方案。它还被大量注释,以显示每个变量是什么。

/**
 * @param Array $default_sizes - Array( \'size_slug\' => \'Title\' )
 *
 * @return Array $return_sizes
 */
function image_sizes_to_mediapicker( $default_sizes ) {
    global $_wp_additional_image_sizes;                             // All additionally added sizes

    $size_slugs     = array_keys( $_wp_additional_image_sizes );    // Get array of additional sizes
    $default_slugs  = array_keys( $default_sizes );                 // Get array of default sizes
    $exclude_sizes  = array( \'medium_large\' );                      // Exclude any image sizes
    // $exclude_sizes = get_option( \'mediapicker_exlcuded_sizes\', array() )             // IF we want to previously set / retrieve an array of excluded options
    $sizes_needed   = array_diff( $size_slugs, $default_slugs, $exclude_sizes );        // Get difference between the defaults and additional sizes
    $return_sizes   = $default_sizes;                               // Let\'s keep separation between passed and returned

    foreach( $sizes_needed as $size_slug ) {
        $pretty_title               = ucwords( str_replace( \'_\', \' \', $size_slug ) );   // Create a pretty title
        $return_sizes[ $size_slug ] = __( $pretty_title );
    }

    return $return_sizes;
}
add_filter( \'image_size_names_choose\', \'image_sizes_to_mediapicker\' );

结束

相关推荐

Resizing all images

我刚刚更改了博客的主题,由于页面宽度很小,它打破了布局。我之前的大多数图片(附在帖子中)的宽度都在600px左右,现在我需要按450px的比例调整它们的大小。如何一次性调整它们的大小?有这个插件吗?P、 美国:编写CSS规则是一个很好的选择,我已经做到了。但我认为调整图像大小也会减少每个页面的下载开销!