当我们安装主题和插件时,都会向…
我在WORDPRESS中遇到的一个问题是你无法在图片标题中添加HTML标签,特别是锚点。本教程将向您展示如何在图像标题中插入链接,以便您可以链接回来获取照片积分等。
WordPress媒体管理器允许您为图像添加标题,这些标题可以插入包含在标题短代码中的帖子内容中。
你可以看到我在照片标题中放置了锚标签以链接到照片信用:
Photo credit: <a href="http://www.flickr.com/photos/nattu/2735064420">nattu</a></code>
当您单击“插入发布”按钮时,您最终会在编辑器中显示此标记:
[ caption id="attachment_1133" align="alignleft" width="300" caption="Photo credit: <a href="http://www.flickr.com/photos/nattu/2735064420">nattu</a>"] <a data-rel="prettyPhoto" title="The Entrance" href="http://localhost/agility/wp-content/uploads/2012/03/TheEntrance.jpg"> <img src="http://localhost/agility/wp-content/uploads/2012/03/TheEntrance-300x199.jpg" alt="" title="The Entrance" width="300" height="199" class="scale-with-grid size-medium wp-image-1133" /></a>[/caption]
问题
问题是caption属性中的所有HTML实体(特别是锚标记)都是编码的。也就是说,而不是
Photo credit: <a href="http://www.flickr.com/photos/nattu/2735064420">nattu</a>
我们有
Photo credit: <a href="http://www.flickr.com/photos/nattu/2735064420">nattu</a>
因此,而不是在我们的标题中获得所需的输出:
Photo credit: <a href="http://www.flickr.com/photos/nattu/2735064420">nattu</a>
我们得到编码的HTML标记:
Photo credit: <a href="http://www.flickr.com/photos/nattu/2735064420">na
解决方案
现在,必须对HTML实体进行转义,以便将它们安全地放在标题短代码的caption =“”属性中(或者至少是双引号),并且无论如何,手动解码实体非常不方便。我们需要做的是在运行时处理短代码时以编程方式解码它们。
有用的是,WordPress的img_caption_shortcode函数(wp-includes / media.php)包含一个过滤器,允许我们挂钩并覆盖标题。这是原始功能:
/** * The Caption shortcode. * * Allows a plugin to replace the content that would otherwise be returned. The * filter is 'img_caption_shortcode' and passes an empty string, the attr * parameter and the content parameter values. * * The supported attributes for the shortcode are 'id', 'align', 'width', and * 'caption'. * * @since 2.6.0 * * @param array $attr Attributes attributed to the shortcode. * @param string $content Optional. Shortcode content. * @return string */ function 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) . '" style="width: ' . (10 + (int) $width) . 'px">' . do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>'; } add_shortcode('gallery', 'gallery_shortcode');
我们只是挂钩并使用相同的代码,但添加了我们自己的一行来解码HTML标签。
$caption = html_entity_decode( $caption );
代码
这样,最终的功能,我已经放在functions.php的,看起来是这样的:
//Our custom caption shortcode function is based on the WordPress Core version with a small change function 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; $caption = html_entity_decode( $caption ); //Here's our new line to decode the html tags 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', 'custom_img_caption_shortcode', 10, 3 );
就是这样!只需将该代码添加到您的WordPress主题或者子主题的functions.php函数中,您就可以添加指向照片标题的链接。如果有人知道更好的方法,请在评论中告诉我。请享用!
微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!
需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!