将图库ID添加到wp_Get_Attach_link的相关属性

时间:2014-02-16 作者:Ruslan

现在我的函数中有了这个片段。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>

1 个回复
最合适的回答,由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.

结束

相关推荐

Update permalinks

我已经将名为Srpski的自定义“文件夹”添加到我的permalink结构中,如中所示。htaccess文件。因此,在WP Dashboard>Settings>Permalinks中,我的自定义permalink结构如下所示:http://webdizajntest.com/poljoprivredni-fakultet/Srpski/%postname%/当我添加新帖子或页面时,我的工作非常好。它显示了他们的永久链接Srpski 在url结构中,这就是我所需要的,因为要维护PageRank