我最近更新了我的旧版(3.0.1版)wordpress博客,其中有许多内容都有图片。我的博客还有一个脚本,可以查找页面内容中的所有图像,并用图像轮播替换它们。一切都适用于旧帖子,但是当我创建一个新帖子时,轮播无法正常工作。我注意到代码的新wordpress版本以另一种方式显示。在这个轮播上,我的脚本输出不起作用。
有没有办法让短代码不会改变。比如一个旧版本。
旧wordpress版短信:
[caption id="attachment_27534" align="alignnone" width="450" caption="Caption text"]<a href="image.jpg"><img class="size-full wp-image-27534" title="" src="gailius.jpg" alt="" width="450" height="370" /></a>[/caption]
新版本将此短代码更改为
[caption id="attachment_27534" align="alignnone" width="450"]<a href="image.jpg"><img class="size-full wp-image-27534" title="" src="image.jpg" alt="" width="450" height="370" /></a>Caption text[/caption]
修改
我找到了生成短代码的函数
function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
if ( empty($caption) || apply_filters( 'disable_captions', '' ) )
return $html;
$id = ( 0 < (int) $id ) ? 'attachment_' . $id : '';
if ( ! preg_match( '/width=["\']([0-9]+)/', $html, $matches ) )
return $html;
$width = $matches[1];
$caption = str_replace( array("\r\n", "\r"), "\n", $caption);
$caption = preg_replace_callback( '/<[a-zA-Z0-9]+(?: [^<>]+>)*/', '_cleanup_image_add_caption', $caption );
// Convert any remaining line breaks to <br>.
$caption = preg_replace( '/[ \n\t]*\n[ \t]*/', '<br />', $caption );
$html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html );
if ( empty($align) )
$align = 'none';
$shcode = '[caption id="' . $id . '" align="align' . $align . '" width="' . $width . '"]' . $html . ' ' . $caption . '[/caption]';
return apply_filters( 'image_add_caption_shortcode', $shcode, $html );
}
我如何从我的functions.php修改这部分?
$shcode = '[caption id="' . $id . '" align="align' . $align . '" width="' . $width . '"]' . $html . ' ' . $caption . '[/caption]';
我替换了所有这个功能
add_filter( 'image_add_caption', 'my_image_add_caption');
function my_image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
但没有改变
答案 0 :(得分:0)
请尝试以下方法:
remove_filter( 'image_send_to_editor', 'image_add_caption', 20);
add_filter( 'image_send_to_editor', 'my_image_add_caption', 10, 8 );
function my_image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
// Your source
}