17713433920 info@mac163.com

我在WORDPRESS中遇到的一个问题是你无法在图片标题中添加HTML标签,特别是锚点。本教程将向您展示如何在图像标题中插入链接,以便您可以链接回来获取照片积分等。

WordPress媒体管理器允许您为图像添加标题,这些标题可以插入包含在标题短代码中的帖子内容中。

你可以看到我在照片标题中放置了锚标签以链接到照片信用:

如何添加WordPress图像标题的链接
如何添加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=&quot;http://www.flickr.com/photos/nattu/2735064420&quot;&gt;nattu&lt;/a&gt;"]
<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: &lt;a href=&quot;http://www.flickr.com/photos/nattu/2735064420&quot;&gt;nattu&lt;/a&gt;

因此,而不是在我们的标题中获得所需的输出:

Photo credit: <a href="http://www.flickr.com/photos/nattu/2735064420">nattu</a>

我们得到编码的HTML标记:

Photo credit: &lt;a href=&quot;http://www.flickr.com/photos/nattu/2735064420&quot;&gt;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开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!
回到顶部