サポート » 使い方全般 » ギャラリーに説明文を入れる

  • kurakuramen

    (@kurakuramen)


    WordPressに備えてあるギャラリーですが、
    固定ページに挿入した場合、一覧で並んでいる個々の画像の下に
    添付ファイルの詳細のキャプションが反映されますが、
    説明が反映されません。説明文を入れるにはどうしたらいいのでしょうか?

    wordrpess4.9.2

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • CG

    (@du-bist-der-lenz)

    メディアでは画像に説明入っていますか

    manbo

    (@manbo)

    WordPressに標準で備わっているギャラリー機能に説明を出力するコードが無いのでget_posts等で画像を呼び出してその中で説明を表示するか、自作でショートコードを作るか、またはそんな事が出来るプラグインを探すかでしょうか。

    自作だと、例えば以下のコードをテーマのfunctions.phpに追加してギャラリーのショートコードを [ gallery ids=から[ my_gallery ids=に変えれば説明も表示できます。
    表示位置は分からないのでキャプションの下にしてますが、この方法を使うなら参考にしてみてください。

    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'];
    }

    $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’ : ‘dl’,
    ‘icontag’ => $html5 ? ‘div’ : ‘dt’,
    ‘captiontag’ => $html5 ? ‘figcaption’ : ‘dd’,
    ‘columns’ => 3,
    ‘size’ => ‘thumbnail’,
    ‘include’ => ”,
    ‘exclude’ => ”,
    ‘link’ => ”
    ), $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 = ‘dl’;
    }
    if ( ! isset( $valid_tags[ $captiontag ] ) ) {
    $captiontag = ‘dd’;
    }
    if ( ! isset( $valid_tags[ $icontag ] ) ) {
    $icontag = ‘dt’;
    }

    $columns = intval( $atts[‘columns’] );
    $itemwidth = $columns > 0 ? floor(100/$columns) : 100;
    $float = is_rtl() ? ‘right’ : ‘left’;

    $selector = “gallery-{$instance}”;

    $gallery_style = ”;

    /**
    * Filters whether to print default gallery styles.
    *
    * @since 3.1.0
    *
    * @param bool $print Whether to print default gallery styles.
    * Defaults to false if the theme supports HTML5 galleries.
    * Otherwise, defaults to true.
    */
    if ( apply_filters( ‘use_default_gallery_style’, ! $html5 ) ) {
    $gallery_style = ”
    <style type=’text/css’>
    #{$selector} {
    margin: auto;
    }
    #{$selector} .gallery-item {
    float: {$float};
    margin-top: 10px;
    text-align: center;
    width: {$itemwidth}%;
    }
    #{$selector} img {
    border: 2px solid #cfcfcf;
    }
    #{$selector} .gallery-caption {
    margin-left: 0;
    }
    /* see gallery_shortcode() in wp-includes/media.php */
    </style>\n\t\t”;
    }

    $size_class = sanitize_html_class( $atts[‘size’] );
    $gallery_div = “<div id=’$selector’ class=’gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}’>”;

    /**
    * Filters 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’, $gallery_style . $gallery_div );

    $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’;
    }
    $output .= “<{$itemtag} class=’gallery-item’>”;
    $output .= ”
    <{$icontag} class=’gallery-icon {$orientation}’>
    $image_output
    </{$icontag}>”;
    if ( $captiontag && trim($attachment->post_excerpt) ) {
    $output .= ”
    <{$captiontag} class=’wp-caption-text gallery-caption’ id=’$selector-$id’>
    ” . wptexturize($attachment->post_excerpt) . ”
    </{$captiontag}>”;
    }

    if ( $attachment->post_content ) {
    $output .= $attachment->post_content;

    }

    $output .= “</{$itemtag}>”;
    if ( ! $html5 && $columns > 0 && ++$i % $columns == 0 ) {
    $output .= ‘<br style=”clear: both” />’;
    }
    }

    if ( ! $html5 && $columns > 0 && $i % $columns !== 0 ) {
    $output .= ”
    <br style=’clear: both’ />”;
    }

    $output .= ”
    </div>\n”;

    return $output;
    }
    add_shortcode( ‘my_gallery’, ‘my_gallery_shortcode’ );

    • この返信は4年前にmanboが編集しました。
    • この返信は3年、 8ヶ月前にNaoko Takanoが編集しました。
    • この返信は3年、 8ヶ月前にNaoko Takanoが編集しました。
    スレッド開始 kurakuramen

    (@kurakuramen)

    manboさん
    詳細なご説明ありがとうございます。
    functions.phpにこのコードを追加してギャラリーのショートコードを[gallery ids=から[my_gallery ids= にすればよろいしんですよね。

    説明文が出てこなかったんですが、外に修正、追加するところはあるんでしょうか?

    manbo

    (@manbo)

    確認したらちょっとやらかしてました。
    キャプションが入ってないと説明が出ないようなコードになっていたので、修正して編集したらスパム扱いされてしまいました。
    修正したコードは以下で確認してください。
    https://pastebin.com/1jNYxM1S
    既存のショートコードの頭にmy_を付けるだけです。

    • この返信は4年前にmanboが編集しました。
    スレッド開始 kurakuramen

    (@kurakuramen)

    manboさん
    ありがとうございます。
    まだ説明文がでません、
    何度かやり直したのですが、うまくいきません。
    こちら側の設定に問題があるんでしょうか?
    my_に修正しています。リンク先は添付ファイルのページに
    していますが、関係なさそうですし。
    お手数掛けます。

    manbo

    (@manbo)

    編集しているファイルは正しいですか?
    ブラウザのキャッシュが影響してませんか?
    実際に試しましたが表示されます。
    https://i.imgur.com/9HXcHdm.jpg

    スレッド開始 kurakuramen

    (@kurakuramen)

    manboさんありがとうございます。
    実際に試されて表示されるのであれば、問題は
    こちら側にあるということですね。
    確認してみます。

    manbo

    (@manbo)

    そのギャラリーは頻繁に更新しますか?
    それとも、一度設定したら殆ど触りませんか?

    ちょっと変なこと書いちゃってました。
    ショートコードはそのまま[gallery ids="・・・"]で良いです。
    コードの最下部をadd_shortcode( 'gallery', 'my_gallery_shortcode' );のようにしてみてください。多分、出てこないのとは無関係だと思いますが…

    • この返信は4年前にmanboが編集しました。
    スレッド開始 kurakuramen

    (@kurakuramen)

    manbo さん
    見逃していました。本当に有難うございます。
     出てこないのとは無関係でした。

    解決したなら解決済みにしてください。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「ギャラリーに説明文を入れる」には新たに返信することはできません。