我有一个 WordPress 帖子/页面,我想在其中包含多个画廊。我正在使用这个 WordPress 插件来管理多个画廊(它基本上包括每个画廊简码实例中选择的图像 ID)。这将为单独的画廊生成以下具有不同 ID 的 html:
<div id="gallery-1">
<dl class="gallery-item">
<dt class="gallery-icon">
<a href="big-image.jpg"><img src="small-img.jpg" /></a>
</dt>
</dl>
<dl> ...another image... </dl>
</div>
<div id="gallery-2">
<dl class="gallery-item">
<dt class="gallery-icon">
<a href="big-image.jpg"><img src="small-img.jpg" /></a>
</dt>
</dl>
<dl> ...another image... </dl>
</div>
...and so on
此外,我有一个过滤器,它为rel
链接到图像的每个锚点添加一个属性:
function slicetheme_attachment_filter($attachment_link)
{
global $post;
$pattern = "/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)<\/a>/i";
$replacement = '<a$1rel="fancybox[%LIGHTID%]" href=$2$3.$4$5 $6>$7</a>';
$attachment_link= preg_replace($pattern, $replacement, $attachment_link);
$attachment_link = str_replace("%LIGHTID%", $post->ID, $attachment_link);
return $attachment_link;
}
add_filter('wp_get_attachment_link', 'slicetheme_attachment_filter');
我对其进行了修改,以便通过添加rel
带有帖子 ID 的每个帖子/页面来获取画廊。因此,对于我的帖子,ID=553
我有:
<a rel="fancybox[553]" href="big-image.jpg"><img src="small-img.jpg" /></a>
但这不是我想要的。我希望每个画廊对其锚点具有不同的 rel 属性。就像是:
<div id="gallery-1">
<dl class="gallery-item">
<dt class="gallery-icon">
<a rel="fancybox-gallery-1" href="big-image.jpg"><img src="small-img.jpg" /></a>
</dt>
</dl>
<dl> ...another image... </dl>
</div>
<div id="gallery-2">
<dl class="gallery-item">
<dt class="gallery-icon">
<a rel="fancybox-gallery-2" href="big-image.jpg"><img src="small-img.jpg" /></a>
</dt>
</dl>
<dl> ...another image... </dl>
</div>
我试图匹配整个事情,但我想我不擅长它......
$pattern = "/<div(.*?)id=('|\")gallery-(.*?)('|\")(.*?)<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)<\/a>/i";
$replacement = '<div$1id=$2gallery-$3$4$5<a$6rel="fancybox-gallery-$3" href=$7$8.$9$10 $11>$12</a>';