サポート » 使い方全般 » ギャラリーのaタグにclassを追加したい

  • 解決済 mitsu666

    (@mitsu666)


    お世話になります。
    ギャラリーのカスタマイズをしておりまして、
    自動生成されるaタグにclassを入れたいと思い、以下のコードを
    functions.phpに書きましたがどうしてもclassが入ってくれません。
    なんとか調べてみましたがドンづまってしまいました。
    どうすればclassが入れられるのかご教授ください!
    何卒よろしくお願いいたします。

    remove_shortcode('gallery', 'gallery_shortcode');    //デフォルトのショートコードの削除
    add_shortcode('gallery', 'my_gallery_shortcode');
    
    function my_gallery_shortcode( $attr ) {
    	$post = get_post();
    
    	static $instance = 0;
    	$instance++;
    
    	if ( ! empty( $attr['ids'] ) ) {
    		// 'ids' is explicitly ordered, unless you specify otherwise.
    		if ( empty( $attr['orderby'] ) ) {
    			$attr['orderby'] = 'post__in';
    		}
    		$attr['include'] = $attr['ids'];
    	}
    
    	/**
    	 * Filter the default gallery shortcode output.
    	 *
    	 * If the filtered output isn't empty, it will be used instead of generating
    	 * the default gallery template.
    	 *
    	 * @since 2.5.0
    	 * @since 4.2.0 The <code>$instance</code> parameter was added.
    	 *
    	 * @see gallery_shortcode()
    	 *
    	 * @param string $output   The gallery output. Default empty.
    	 * @param array  $attr     Attributes of the gallery shortcode.
    	 * @param int    $instance Unique numeric ID of this gallery shortcode instance.
    	 */
    	$output = apply_filters( 'post_gallery', '', $attr, $instance );
    	if ( $output != '' ) {
    		return $output;
    	}
    
    	$html5 = current_theme_supports( 'html5', 'gallery' );
    	$atts = shortcode_atts( array(
    		'order'      => 'ASC',
    		'orderby'    => 'menu_order ID',
    		'id'         => $post ? $post->ID : 0,
    		'itemtag'    => $html5 ? 'figure'     : 'ul',
    		'icontag'    => $html5 ? 'div'        : 'li',
    		'captiontag' => $html5 ? 'figcaption' : 'p',
    		'columns'    => 3,
    		'size'       => 'det_visual',
    		'include'    => '',
    		'exclude'    => '',
    		'link'       => 'file'
    	), $attr, 'gallery' );
    
    	$id = intval( $atts['id'] );
    
    	if ( ! empty( $atts['include'] ) ) {
    		$_attachments = get_posts( array( 'include' => $atts['include'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
    
    		$attachments = array();
    		foreach ( $_attachments as $key => $val ) {
    			$attachments[$val->ID] = $_attachments[$key];
    		}
    	} elseif ( ! empty( $atts['exclude'] ) ) {
    		$attachments = get_children( array( 'post_parent' => $id, 'exclude' => $atts['exclude'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
    	} else {
    		$attachments = get_children( array( 'post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
    	}
    
    	if ( empty( $attachments ) ) {
    		return '';
    	}
    
    	if ( is_feed() ) {
    		$output = "\n";
    		foreach ( $attachments as $att_id => $attachment ) {
    			$output .= wp_get_attachment_link( $att_id, $atts['size'], true ) . "\n";
    		}
    		return $output;
    	}
    
    	$itemtag = tag_escape( $atts['itemtag'] );
    	$captiontag = tag_escape( $atts['captiontag'] );
    	$icontag = tag_escape( $atts['icontag'] );
    	$valid_tags = wp_kses_allowed_html( 'post' );
    	if ( ! isset( $valid_tags[ $itemtag ] ) ) {
    		$itemtag = 'ul';
    	}
    	if ( ! isset( $valid_tags[ $captiontag ] ) ) {
    		$captiontag = 'p';
    	}
    	if ( ! isset( $valid_tags[ $icontag ] ) ) {
    		$icontag = 'li';
    	}
    
    	$columns = intval( $atts['columns'] );
    	$itemwidth = $columns > 0 ? floor(100/$columns) : 100;
    	$float = is_rtl() ? 'right' : 'left';
    
    	$selector = "thumbs";
    
    	$size_class = sanitize_html_class( $atts['size'] );
    	$gallery_div = "<div id='$selector' class='navigation gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>";
    
    	/**
    	 * Filter the default gallery shortcode CSS styles.
    	 *
    	 * @since 2.5.0
    	 *
    	 * @param string $gallery_style Default CSS styles and opening HTML div container
    	 *                              for the gallery shortcode output.
    	 */
    	$output = apply_filters( 'gallery_style', "
    	<div id='gallery' class='content'>
    		<div class='slideshow-container'>
    			<div id='loading' class='loader'></div>
    			<div id='slideshow' class='slideshow'></div>
    		</div>
    	</div>
    	<div id='thumbs' class='navigation'>
    		<ul class='thumbs noscript'>
      ");
    
    	$i = 0;
    	foreach ( $attachments as $id => $attachment ) {
    
    		$attr = ( trim( $attachment->post_excerpt ) ) ? array( 'aria-describedby' => "$selector-$id" ) : '';
    		if ( ! empty( $atts['link'] ) && 'file' === $atts['link'] ) {
    			$image_output = wp_get_attachment_link( $id, $atts['size'], false, false, false, $attr );
    		} elseif ( ! empty( $atts['link'] ) && 'none' === $atts['link'] ) {
    			$image_output = wp_get_attachment_image( $id, $atts['size'], false, $attr );
    		} else {
    			$image_output = wp_get_attachment_link( $id, $atts['size'], true, false, false, $attr );
    		}
    		$image_meta  = wp_get_attachment_metadata( $id );
    
    		$orientation = '';
    		if ( isset( $image_meta['height'], $image_meta['width'] ) ) {
    			$orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
    		}
    
        $link =  wp_get_attachment_link($id, $size, false, false);
        $link=str_replace('<a ','<a class="thumb" ', $link);
    
    		$output .= "
    			<{$icontag}>
    				$image_output
    			</{$icontag}>";
    	}
    
    	$output .= "
    		</ul>\n</div>\n<div class='clear'></div>\n";
    
    	return $output;
    }
1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 mitsu666

    (@mitsu666)

    すみません、自己解決いたしました。
    お騒がせいたしました。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「ギャラリーのaタグにclassを追加したい」には新たに返信することはできません。