サポート » 使い方全般 » lightboxのグループ化について

  • 解決済 sai_office

    (@sai_office)


    WordPress初心者です。

    function.php内でギャラリーを追加した際にlightboxがグループになるように
    タグを入れたいと思っています。

    そこで、function内に以下のように、画像に<a>が追加されるように投稿IDを取得する記述をしてみたのですが、うまく取得できません。

    $link=str_replace('<a ','<a rel="lightbox[global $post_ID;]" ',

    function内で投稿IDを取得し、リンク内に取り込む記述を教えてください。

    なお、function内のフォトギャラリー制御箇所は以下の通りです。

    function my_gallery_shortcode($attr) {
    	global $post;
    
    	static $instance = 0;
    	$instance++;
    
    	// Allow plugins/themes to override the default gallery template.
    	$output = apply_filters('post_gallery', '', $attr);
    	if ( $output != '' )
    		return $output;
    
    	// We're trusting author input, so let's at least make sure it looks like a valid orderby statement
    	if ( isset( $attr['orderby'] ) ) {
    		$attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] );
    		if ( !$attr['orderby'] )
    			unset( $attr['orderby'] );
    	}
    
    	extract(shortcode_atts(array(
    		'order'      => 'ASC',
    		'orderby'    => 'menu_order ID',
    		'id'         => $post->ID,
    		'itemtag'    => 'li',
    		'icontag'    => 'p',
    		'captiontag' => 'p',
    		'columns'    => 3,
    		'size'       => 'thumbnail',
    		'include'    => '',
    		'exclude'    => ''
    	), $attr));
    
    	$id = intval($id);
    	if ( 'RAND' == $order )
    		$orderby = 'none';
    
    	if ( !empty($include) ) {
    		$include = preg_replace( '/[^0-9,]+/', '', $include );
    		$_attachments = get_posts( array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
    
    		$attachments = array();
    		foreach ( $_attachments as $key => $val ) {
    			$attachments[$val->ID] = $_attachments[$key];
    		}
    	} elseif ( !empty($exclude) ) {
    		$exclude = preg_replace( '/[^0-9,]+/', '', $exclude );
    		$attachments = get_children( array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
    	} else {
    		$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() ) {
    		$output = "\n";
    		foreach ( $attachments as $att_id => $attachment )
    			$output .= wp_get_attachment_link($att_id, $size, true) . "\n";
    		return $output;
    	}
    
    	$itemtag = tag_escape($itemtag);
    	$captiontag = tag_escape($captiontag);
    	$columns = intval($columns);
    	$itemwidth = $columns > 0 ? floor(100/$columns) : 100;
    	$float = is_rtl() ? 'right' : 'left';
    
    	$selector = "gallery-{$instance}";
    
    	$gallery_style = $gallery_div = '';
    	if ( apply_filters( 'use_default_gallery_style', true ) )
    		$gallery_style = "
    		<style type='text/css'>
    			#{$selector} {
    				/* style */
    			}
    			#{$selector} ul{
    				/* style */
    			}
    
    			#{$selector} .gallery-item {
    				/* style */
    			}
    			#{$selector} .gallery-icon{
    				/* style */
    			}
    			#{$selector} img {
    				/* style */
    			}
    		</style>
    		<!-- see gallery_shortcode() in wp-includes/media.php -->";
    	$size_class = sanitize_html_class( $size );
    	$gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'><ul class='clearfix'>";
    	$output = apply_filters( 'gallery_style', $gallery_style . "\n\t\t" . $gallery_div );
    
    	$i = 0;
    	foreach ( $attachments as $id => $attachment ) {
    		$link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, false, false);
    		$link=str_replace('<a ','<a rel="lightbox[global $post_ID;]" ', $link);
    		$output .= "<{$itemtag} class='gallery-item'>";
    		$output .= "
    			<{$icontag} class='gallery-icon'>
    				$link
    			</{$icontag}>";

    よろしくお願いします。

  • トピック「lightboxのグループ化について」には新たに返信することはできません。