(2012年5月4日更新:包括标题)
让我们从一个解决方案开始…
没有过滤器,特别是对于画廊图像链接。gallery短代码输出也没有过滤器。所以我们必须伪造一个:
add_action( \'after_setup_theme\', \'wpse_50911_replace_img_shortcodes\' );
/**
* Replace the default shortcode handlers.
*
* @return void
*/
function wpse_50911_replace_img_shortcodes()
{
remove_shortcode( \'gallery\', \'gallery_shortcode\' );
add_shortcode( \'gallery\', \'wpse_50911_gallery_shortcode\' );
remove_shortcode( \'caption\', \'img_caption_shortcode\' );
remove_shortcode( \'wp_caption\', \'img_caption_shortcode\' );
add_shortcode( \'caption\', \'wpse_50911_caption_shortcode\' );
add_shortcode( \'wp_caption\', \'wpse_50911_caption_shortcode\' );
}
它的作用:它替换默认的短代码处理程序
[gallery]
,
[caption]
和
[wp_caption]
. 现在我们必须编写替换函数。这其实很简单,因为我们让WordPress(几乎)完成所有工作:
/**
* Add the new attribute to the gallery.
*
* @param array $attr Shortcode attributes
* @return string
*/
function wpse_50911_gallery_shortcode( $attr )
{
// Let WordPress create the regular gallery …
$gallery = gallery_shortcode( $attr );
// … and add the target attribute to all links.
$gallery = str_replace( \'<a \', \'<a target="_blank" \', $gallery );
return $gallery;
}
/**
* Add the new attribute to the caption.
*
* @param array $attr Shortcode attributes
* @param string $content Caption text
* @return string
*/
function wpse_50911_caption_shortcode( $attr, $content = NULL )
{
$caption = img_caption_shortcode( $attr, $content );
$caption = str_replace( \'<a \', \'<a target="_blank" \', $caption );
return $caption;
}
它的作用:它将短代码工作委托给原生WordPress函数。然后它获取输出并插入属性
target="_blank"
. 然后将输出返回到页面。
完成。插入图库或标题时,请确保链接指向文件URI,而不是附件页。
注意事项新窗口将打断后退按钮。这对屏幕阅读器或某些移动设备的用户来说是非常恼人的不要使用此代码……除非你被迫花费大量资金来执行此代码。