现在我的函数中有了这个片段。php
/**
* Add rel to links.
*/
function add_rel_to_gallery($link) {
return str_replace(\'<a href=\', \'<a data-fancybox="true" rel="group" href=\', $link);
}
add_filter( \'wp_get_attachment_link\', \'add_rel_to_gallery\' );
库中的每个链接都有
rel="group", 但实际上我想得到这样的东西:
rel="group-$gallery-id"
如何做到这一点?
What is gallery id?
<div id="gallery-1" class="gallery galleryid-1457 gallery-columns-5 gallery-size-thumbnail">
<dl class="gallery-item">
<dt class="gallery-icon landscape">
<a data-fancybox="true" rel="group" href="smt.jpg"><img src="smt.jpg" class="attachment-thumbnail" alt="ult-collection_sh10154" height="150" width="150"></a>
</dt></dl><dl class="gallery-item">
<dt class="gallery-icon landscape">
<a data-fancybox="true" rel="group" href="smt.jpg"><img src="smt.jpg" class="attachment-thumbnail" alt="ult-collection_sh10153_1" height="150" width="150"></a>
</dt>
</dl>
</div>
在此输出中,库id为1457。
我需要gallery id(或可以将图像从一个gallery分组到一个rel组的东西)来创建fancybox组:
注意:ID是一次性的,只应用于一个元素。库是从具有相同“data fancybox group”或“rel”属性值的元素创建的。
通过http://fancyapps.com/fancybox/#examples
To @s_ha_dum:
function add_rel_to_gallery($link, $id) {
return str_replace(\'<a href=\', \'<a data-fancybox="true" rel="group-\'.$id.\'" href=\', $link);
}
add_filter( \'wp_get_attachment_link\', \'add_rel_to_gallery\', 10, 2 );
输出:
<div id="gallery-1" class="gallery galleryid-1457 gallery-columns-5 gallery-size-thumbnail"><dl class="gallery-item">
<dt class="gallery-icon landscape">
<a data-fancybox="true" rel="group-1461" href="http://streetball.name/wp-content/uploads/2013/04/ult-collection_sh10153_1.jpeg"><img src="http://streetball.name/wp-content/uploads/2013/04/ult-collection_sh10153_1-150x150.jpeg" class="attachment-thumbnail" alt="ult-collection_sh10153_1" height="150" width="150"></a>
</dt></dl><dl class="gallery-item">
<dt class="gallery-icon landscape">
<a data-fancybox="true" rel="group-1467" href="http://streetball.name/wp-content/uploads/2013/04/ult-collection_sh10348_1.jpeg"><img src="http://streetball.name/wp-content/uploads/2013/04/ult-collection_sh10348_1-150x150.jpeg" class="attachment-thumbnail" alt="ult-collection_sh10348_1" height="150" width="150"></a>
</dt></dl>
</div>
最合适的回答,由SO网友:s_ha_dum 整理而成
That filter passes more arguments than you are using.
return apply_filters( \'wp_get_attachment_link\', "<a href=\'$url\'>$link_text</a>", $id, $size, $permalink, $icon, $text );
第二个是你需要的。因此,您需要更改回调以使用第二个参数,并更改
add_filter
通过将第四个参数设置为2来请求它。
function add_rel_to_gallery($link, $id) {
return str_replace(\'<a href=\', \'<a data-fancybox="true" rel="group-\'.$id.\'" href=\', $link);
}
add_filter( \'wp_get_attachment_link\', \'add_rel_to_gallery\', 10, 2 );
看到你的编辑后,我意识到我误读了你的意图,我试图找到一种方法来创建一个静态库特定的ID,而不过度滥用挂钩。我不确定我是否成功地完成了最后一部分,但以下几点似乎奏效了:
function get_id($inc = false) {
static $id;
if ($inc) {
$id++;
}
return $id;
}
function replace($link) {
$id = get_id();
return str_replace(\'<a href=\', \'<a data-fancybox="true" rel="group-\'.$id.\'" href=\', $link);
}
add_filter(
\'post_gallery\',
function() {
get_id(true);
add_filter(\'wp_get_attachment_link\',\'replace\');
}
);
正确的答案可能是使用
post_gallery
hook 劫持库的其余短代码,或
just overwrite the gallery shortcode with one of your own.