1

複数のギャラリーを入れたい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>';
4

1 に答える 1

1

関数をコピーしてから関数gallery_shortcode()を追加apply_filter('gallery_shortcode', 'your_gallery_shortcode_copy')し、ギャラリーIDが静的プロパティである独自のコードにyour_gallery_shortcode_copy()置き換えることができます。wp_get_attachment_link()$instance

于 2013-04-26T19:02:22.407 に答える