Два примера, для решения одной и той же задачи.
В первом примере полный идиотизм, во втором хорошее решение. Вот теперь вопрос, почему большая часть всех CMS работает как первый пример. ?
Убого:
add_filter('wp_get_attachment_link', 'add_rel');
/*
* Add rel="gallery-$id" to attachment links
*/
function add_rel ( $link )
{
global $post;
// a mild cheat. group by post id. the gallery_shortcode() $instance
// static var would be better, but we can't get to it.
$id = $post->ID;
// First, see if there's already a 'rel' attribute in the link:
$atag = preg_match( '#<a \s+(.*?)(rel=([\'"])(.*?)\3)(.*?)>(.*)#i', $link, $matches );
if ( $atag )
{
// Match found. Let's put Humpty Dumpty back together again:
$quot = $matches [ 3 ];
$relval = $quot . $matches [ 4 ] . " gallery-{$id}" . $quot;
$before = $matches [ 1 ];
$after = $matches [ 5 ];
$rest = $matches [ 6 ];
$link = "</a><a {$before}rel={$relval}{$after}>{$rest}";
}
else
{
$atag = preg_match( '#</a><a \s+(.*?)>(.*)#i', $link, $matches );
if ( $atag )
{
// This is a much simpler reassembly
$innards = $matches [ 1 ];
$rest = $matches [ 2 ];
$relval = "gallery-{$id}";
$link = "</a><a {$innards} rel='{$relval}'>{$rest}";
}
}
return $link;
}
Нормально:
function gallery_image_higslide()
{
var gallery = $('.gallery').find('a');
$.each( gallery, function() {
var img = $(this).find('img');
if( $(img).size() > 0 && $(this).attr('onclick') == undefined ){
$(this).addClass('highslide-image').click(function(){ return hs.expand(this); });
}
});
}
$(document).ready(function(){
gallery_image_higslide();
});