我已经做了很多搜索,并找到了如何自定义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包装器的类,但我不知道如何做到这一点。
最合适的回答,由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
);
}