我最近安装了bonpress 主题和标题显示不正确。我越想了解字幕在Wordpress中的工作原理,就越怀疑我的安装有问题。
当创建帖子并插入带有标题的图像时,Wordpress会创建以下短代码:
[caption id="attachment_40" align="alignleft" width="1024"]<a href="http://wordpress.local/wp-content/uploads/2012/10/2012-10-30-11.38.36.jpg"><img class="size-large wp-image-40" title="Torn motorcycle cover" src="http://wordpress.local/wp-content/uploads/2012/10/2012-10-30-11.38.36-e1351653272372-1024x984.jpg" alt="" width="1024" height="984" /></a> That\'s what I get for only spending $15 on a motorcycle cover[/caption]
当我阅读几页时,如
the first example here 和
the sample code here (由bonpress使用),标题似乎应该作为属性传递,例如:
[caption id="attachment_40" align="alignleft" width="1024" caption="That\'s what I get for only spending $15 on a motorcycle cover"]<a href="http://wordpress.local/wp-content/uploads/2012/10/2012-10-30-11.38.36.jpg"><img class="size-large wp-image-40" title="Torn motorcycle cover" src="http://wordpress.local/wp-content/uploads/2012/10/2012-10-30-11.38.36-e1351653272372-1024x984.jpg" alt="" width="1024" height="984" /></a>[/caption]
如果我用
caption
作为属性,它可以正确渲染。我的安装中是否有损坏的内容,使其无法以这种方式构建?
Update: 标题短代码由image_add_caption
在/wp admin/includes/media中。php(WP 3.4.2中的第134行)。短代码是根据这段代码正确构造的,因此我想知道为什么我能找到所有关于img_caption_shortcode
筛选器假定标题是属性?
最合适的回答,由SO网友:Ken Shoufer 整理而成
查找线路/* Remove [caption] in-line styling
在里面function.php
.
注释掉:
/*
add_shortcode(\'wp_caption\', \'fixed_img_caption_shortcode\');
add_shortcode(\'caption\', \'fixed_img_caption_shortcode\');
function fixed_img_caption_shortcode($attr, $content = null) {
// Allow plugins/themes to override the default caption template.
$output = apply_filters(\'img_caption_shortcode\', \'\', $attr, $content);
if ( $output != \'\' ) return $output;
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)
. \'">\'
. do_shortcode( $content ) . \'<p class="wp-caption-text">\'
. $caption . \'</p></div>\';
}
*/
查找
.entry .wp-caption-text
在里面
style.css
. 改变风格以适合您的口味。
问题已修复。你完成了。
SO网友:Mike S.
我找到了一个不完美的解决方案here. 将以下行添加到主题的fixed_image_caption_shortcode
功能(以前与相同here) 按预期呈现标题,但不将标题添加为属性。
if ( ! isset( $attr[\'caption\'] ) ) {
if ( preg_match( \'#((?:<a [^>]+>\\s*)?<img [^>]+>(?:\\s*</a>)?)(.*)#is\', $content, $matches ) ) {
$content = $matches[1];
$attr[\'caption\'] = trim( $matches[2] );
}
}
这个解决方案已经足够了,但希望有人有更好的解决方案。。。