我也遇到了同样的问题,但我没有使用Nextgen(在我看来这太过火了),而是将Gallerific集成为WordPress gallery的短代码替代品。它工作得非常好,对最终用户来说非常简单,因为他们只需将图像添加到帖子中,然后单击“插入图库”。
我将在下面提供用作参考的代码:
最后,我使用了标题,而不是图像上的描述。
插件:
注意:这使用了Tadlock的Cleaner Gallery插件中的一些逻辑和代码。
add_filter( \'post_gallery\', \'galleriffic_gallery\', 10, 2 );
function galleriffic_gallery() {
global $post;
/* Orderby */
if ( isset( $attr[\'orderby\'] ) ) :
$attr[\'orderby\'] = sanitize_sql_orderby( $attr[\'orderby\'] );
if ( !$attr[\'orderby\'] )
unset( $attr[\'orderby\'] );
endif;
/*
* Extract default gallery settings
*/
extract(shortcode_atts(array(
\'order\' => \'ASC\',
\'orderby\' => \'menu_order ID\',
\'id\' => $post->ID,
\'itemtag\' => \'dl\',
\'icontag\' => \'dt\',
\'captiontag\' => \'dd\',
\'columns\' => 3,
\'size\' => \'thumbnail\',
), $attr));
/*
* Make sure $id is an integer
*/
$id = intval( $id );
/*
* Get image attachments
* If none, return
*/
$attachments = get_children( array(\'post_parent\' => $id, \'post_status\' => \'inherit\', \'post_type\' => \'attachment\', \'post_mime_type\' => \'image\', \'order\' => $order, \'orderby\' => $orderby) );
if ( empty( $attachments ) )
return \'\';
/*
* If is feed, leave the default WP settings
* We\'re only worried about on-site presentation
*/
if ( is_feed() ) {
$output = "\\n";
foreach ( $attachments as $id => $attachment )
$output .= wp_get_attachment_link( $id, $size, true ) . "\\n";
return $output;
}
$i = 0;
/*
* Remove the style output in the middle of the freakin\' page.
* This needs to be added to the header.
* The width applied through CSS but limits it a bit.
*/
/*
* Open the gallery <div>
*/
$output .= \'<div id="gallery-wrap" class="gallery-wrap">\'."\\n";
$output .= \'<div id="gallery-\'.$id.\'" class="content gallery gallery-\'.$id.\'">\'."\\n";
$output .= \'<div id="loading" class="loader"></div>\'."\\n";
$output .= \'<div id="slideshow" class="slideshow"></div>\'."\\n";
$output .= \'<div id="controls" class="controls"></div>\'."\\n";
$output .= \'<div id="caption" class="embox"></div>\'."\\n";
$output .= \'</div><!--#gallery-\'.$id.\'-->\'."\\n";
$output .= \'<div id="thumbs" class="navigation">\'."\\n";
$output .= \'<ul class="thumbs noscript">\'."\\n";
/*
* Loop through each attachment
*/
foreach ( $attachments as $id => $attachment ) :
/*
* Get the caption and title
*/
$caption = wp_specialchars( $attachment->post_excerpt, 1 );
$title = wp_specialchars( $attachment->post_title, 1 );
$link = wp_get_attachment_image_src( $id, \'large\' );
$img = wp_get_attachment_image_src( $id, $size );
/*
* Open each gallery item
*/
$output .= "\\n\\t\\t\\t\\t\\t<li class=\'gallery-item\'>";
$output .= \'<a class="thumb" href="\' . wp_get_attachment_url( $id ) . \'" title="\' . $title . \'">\';
$output .= \'<img src="\' . $img[0] . \'" alt="\' . $title . \'" title="\' . $title . \'" />\';
$output .= \'</a>\';
$output .= "\\n\\t\\t\\t\\t\\t</li>";
endforeach;
/*
* Close gallery and return it
*/
$output .= \'</ul><!--.thumbs-->\'."\\n";
$output .= \'</div><!--#thumbs-->\'."\\n";
$output .= \'</div><!--#gallery-wrap-->\'."\\n";
$output .= \'<div class="cb"></div>\'."\\n";
/*
* Return out very nice, valid XHTML gallery.
*/
return $output;
}
?>
Galleric设置
注意:如果您将设置放在一个单独的文件中,并使用wp_enqueue_脚本调用它,将使模板更干净。
jQuery(document).ready(function($) {
// We only want these styles applied when javascript is enabled
$(\'div.navigation\').css({\'width\' : \'710px\', \'float\' : \'left\'});
$(\'div.content\').css(\'display\', \'block\');
// Initially set opacity on thumbs and add
// additional styling for hover effect on thumbs
var onMouseOutOpacity = 0.67;
$(\'#thumbs ul.thumbs li\').opacityrollover({
mouseOutOpacity: onMouseOutOpacity,
mouseOverOpacity: 1.0,
fadeSpeed: \'fast\',
exemptionSelector: \'.selected\'
});
var gallery = $(\'#thumbs\').galleriffic({
delay: 3000,
numThumbs: 12,
preloadAhead: 10,
enableTopPager: false,
enableBottomPager: true,
imageContainerSel: \'#slideshow\',
controlsContainerSel: \'#controls\',
captionContainerSel: \'#caption\',
loadingContainerSel: \'#loading\',
renderSSControls: true,
renderNavControls: true,
playLinkText: \'Play Slideshow\',
pauseLinkText: \'Pause Slideshow\',
prevLinkText: \'‹ ‹ Previous Photo\',
nextLinkText: \'Next Photo › ›\' ,
nextPageLinkText: \'Next ›\',
prevPageLinkText: \'‹ Prev\',
enableHistory: true,
autoStart: false,
syncTransitions: true,
defaultTransitionDuration: 200,
onSlideChange: function(prevIndex, nextIndex) {
// \'this\' refers to the gallery, which is an extension of $(\'#thumbs\')
this.find(\'ul.thumbs\').children()
.eq(prevIndex).fadeTo(\'fast\', onMouseOutOpacity).end()
.eq(nextIndex).fadeTo(\'fast\', 1.0);
},
onTransitionOut: function(slide, caption, isSync, callback) {
slide.fadeTo(this.getDefaultTransitionDuration(isSync), 0.0, callback);
caption.fadeTo(this.getDefaultTransitionDuration(isSync), 0.0);
},
onTransitionIn: function(slide, caption, isSync) {
var duration = this.getDefaultTransitionDuration(isSync);
slide.fadeTo(duration, 1.0);
},
onPageTransitionOut: function(callback) {
this.fadeTo(\'fast\', 0.0, callback);
},
onPageTransitionIn: function() {
this.fadeTo(\'fast\', 1.0);
},
onImageAdded: function(imageData, $li) {
$li.opacityrollover({
mouseOutOpacity: onMouseOutOpacity,
mouseOverOpacity: 1.0,
fadeSpeed: \'fast\',
exemptionSelector: \'.selected\'
});
}
});
function pageload(hash) {
// alert("pageload: " + hash);
// hash doesn\'t contain the first # character.
if(hash) {
$.galleriffic.gotoImage(hash);
} else {
gallery.gotoIndex(0);
}
}
gallery.find(\'a.prev\').click(function(e) {
gallery.previousPage();
e.preventDefault();
});
gallery.find(\'a.next\').click(function(e) {
gallery.nextPage();
e.preventDefault();
});
// Initialize history plugin.
// The callback is called at once by present location.hash.
$.historyInit(pageload, "advanced.html");
});
我曾计划将其作为插件发布,但它仍需要一些工作才能使我们对大众有用。