不包括字幕作为属性的字幕快捷代码

时间:2012-10-31 作者:Mike S.

我最近安装了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 herethe 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 筛选器假定标题是属性?

3 个回复
最合适的回答,由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] );
    }
}
这个解决方案已经足够了,但希望有人有更好的解决方案。。。

SO网友:s_ha_dum

通过在代码运行后添加以下两行代码,您应该能够强制短代码返回默认值,以重新劫持它:

add_shortcode(\'wp_caption\', \'img_caption_shortcode\');
add_shortcode(\'caption\', \'img_caption_shortcode\');
这应该会将短代码设置回the Core callback 然后撤销那些fixed_img_caption_shortcode 打破了

结束

相关推荐

no content after shortcode

我希望你们能帮我解决我遇到的这个小错误。我正在使用一个快捷码在条目中显示音频播放器。这是我在函数中输入的代码。php:function html5_audio($atts, $content = null) { extract(shortcode_atts(array( \"src\" => \'\', \"preload\"=> \'none\', \"loop\" => \'\' ), $atts)); retu