自定义图像大小的自定义字幕输出

时间:2013-09-13 作者:Gabriel Luethje

我已经做了很多搜索,并找到了如何自定义img_caption_shortcode oputput。我似乎不知道该怎么做:

如果在媒体上载程序中选择了特定的自定义缩略图大小,请在标题的输出中添加特定的类。

所以,请详细说明一下:

我创建了一个新的图像大小:

add_image_size( \'profile-image\', 300, 300 );
我将其添加到媒体上载器图像大小选项中:

/**
 * Add Custom Image sizes to Media Uploader
 */
add_filter( \'image_size_names_choose\', \'my_custom_image_sizes\' );

function my_custom_image_sizes( $sizes ) {
    return array_merge( $sizes, array(
        \'profile-image\' => __(\'Profile Image with Caption\'),
    ) );
}
我发现这个代码挂接到img_caption_shortcode 功能:

function my_custom_img_caption_shortcode($a, $attr, $content = null) {

    extract(shortcode_atts(array(
        \'id\'    => \'\',
        \'align\' => \'alignnone\',
        \'width\' => \'\',
        \'caption\' => \'\'
    ), $attr));

    if ( 1 > (int) $width || empty($caption) )
        return $content;

    if ( $id ) $id = \'id="\' . esc_attr($id) . \'" \';

    return \'<div \' . $id . \'class="wp-caption \' . esc_attr($align) . \'" style="width: \' . (10 + (int) $width) . \'px">\'
. do_shortcode( $content ) . \'<p class="wp-caption-text">\' . $caption . \'</p></div>\';
}
//Add the filter to override the standard shortcode
add_filter( \'img_caption_shortcode\', \'my_custom_img_caption_shortcode\', 10, 3 );
现在,如果profile-image 已选择缩略图大小。我想我应该试着输出缩略图大小(size-profile-image) WP提供给标题的div包装器的类,但我不知道如何做到这一点。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

您只需要一个正则表达式就可以从内容中捕获类,检查适合您大小的类是否是指定的类之一,如果是,则添加到输出中,例如:

function my_custom_img_caption_shortcode($a, $attr, $content = null) { 

  extract( shortcode_atts( array(
    \'id\' => \'\', \'align\' => \'alignnone\', \'width\' => \'\', \'caption\' => \'\'
  ), $attr) );

  if ( 1 > (int) $width || empty($caption) ) return $content;

  if ( $id ) $id = \'id="\' . esc_attr($id) . \'" \';

  // set the initial class output
  $class = \'wp-caption\';
  // use a preg match to catch the img class attribute
  preg_match(\'/<img.*class[ \\t]*=[ \\t]*["\\\']([^"\\\']*)["\\\'][^>]+>/\', $content, $matches);
  $class_attr = isset($matches[1]) && $matches[1] ? $matches[1] : false;
  // if the class attribute is not empty get an array of all classes
  if ( $class_attr ) {
    foreach ( explode(\' \', $class_attr) as $aclass ) {
      if ( strpos($aclass, \'size-\') === 0 ) $class .= \' \' . $aclass;
    }
  }

  $class .= \' \' . esc_attr($align);

  return sprintf (
    \'<div %sclass="%s" style="width:%dpx">%s<p class="wp-caption-text">%s</p></div>\',
    $id, $class, (10 + (int)$width), do_shortcode($content), $caption
  );

}

结束

相关推荐

Resize uploaded images

Possible Duplicate:Resizing all images 我有一个我建立的新闻门户,客户想要不同大小的特色图片。我已经准备好了我想要的第一个尺寸,他们已经发布了大约200多篇帖子,都准备好了这个尺寸。现在,如果我改变大小,它只会在新帖子上改变/或重新上传当前的特色图片(手工操作太多了)。我的问题是,有没有办法调整上传图像的大小?