• 解決済 haha taduko

    (@shimodar)


    こんにちは。
    WordPressをいつも楽しく使わせていただいています。

    現在、ギャラリー機能を利用して表示させているサムネイル一覧があります。
    このサムネイルたちのアンカーリンクの指定を直接このサムネイル画像の
    「大サイズ」や「中サイズ」を指定したいと考えているのですが、
    そのようなことは可能でございますでしょうか。

    サムネイル画像をクリック(リンク先は、設定→メディア→画像サイズ→中サイズ指定のもの)
    →中サイズ画像が画面に直接開く。

    といったアクションを期待しています。

    フォーラムの中をギャラリーで検索してみましたが、うまく同様の対策につながるようなものを見つけられず新規でトピックを立てさせて頂きました。

    どうぞよろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    shimodarさん、こんにちは。

    可能ではあります。

    1つは、wp_get_attachment_urlにフックして、フック内でwp_get_attachment_image_srcを使って中サイズのURLを返す方法。これはギャラリー機能のコードには一切手をつけずコード量も少なくてすみますが、本来フルサイズで表示される画像が中サイズになってしまう可能性があります。

    2つ目は、ギャラリーのコードそのものを差し替えて、中サイズの画像へリンクされるようにするものです。この方法は、ギャラリー以外には一切影響は出ない代わりに、ギャラリーのコード全てを書き直すことになるので、コードの量はそこそこ長くなります。下記の質問にある方法が、ギャラリー機能を一旦削除し、再度登録しなおす方法になるので参考にしてみてください。

    ギャラリー機能を使い、スワップイメージを導入したい

    トピック投稿者 haha taduko

    (@shimodar)

    >>jim912さま

    アドバイスありがとうございました!

    後者の方法でいまためしているところなのですが、紹介いただいたリンクのコード中の土の部分がそれにあたるのかよくわかりませんでした。

    ‘large_size’ => ‘medium’,


    の部分かと思い、いろいろ試しているのですが、うまく機能していないのが現状です。

    ギャラリーのサムネイルをクリックした場合に、どうすれば大きな画像は中サイズのものだとシステム側に認識させることができるのか、

    さらにアドバイス、ヒントをいただけますと嬉しいです。
    どうぞよろしくお願い致します。

    モデレーター jim912

    (@jim912)

    shimodarさん

    どこまで実現できているか文面からはわからないので、とりあえず全手順説明します。

    1. まず、wp-includes/media.phpに記述されているギャラリーのソースを生成する関数gallery_shortcodeを、そっくりそのままテーマのfunctions.phpにコピーして関数名を変更します。
    2. 先の回答で例示した質問を参考に、デフォルトのギャラリーショートコードを一旦削除し、テーマにコピーしてきた関数名で再度ギャラリーショートコードを登録します。
    3. shortcode_attsの配列の中に、開く画像のサイズが指定できるよう large_size という配列を追加します。
      extract(shortcode_atts(array(
      		'order'      => 'ASC',
      		'orderby'    => 'menu_order ID',
      		'id'         => $post->ID,
      		'itemtag'    => 'dl',
      		'icontag'    => 'dt',
      		'captiontag' => 'dd',
      		'columns'    => 3,
      		'size'       => 'thumbnail',
      		'large_size' => 'medium',
      		'include'    => '',
      		'exclude'    => ''
      	), $attr));
    4. ギャラリーの画像表示およびリンクのHTMLソースを生成している部分は、下記になります。ここでは、linkというパラメータの指定がfileだったときには元の画像を、それ以外の場合は、アタッチメントページへのリンクを生成しています。
      $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
    5. この部分をカスタマイズして、linkパラメータがfileだったら、large_sizeで指定されたサイズの画像へのリンクとギャラリーで表示する画像のHTMLソースを生成するように変更します。
      if ( isset($attr['link']) && 'file' == $attr['link'] ) {
      			list( $large_src, $large_width, $large_height ) = wp_get_attachment_image_src( $id, $large_size );
      			$link = '<a href="' . $large_src . '">' . wp_get_attachment_image( $id, $size ) . '</a>';
      		} else {
      			$link = wp_get_attachment_link($id, $size, true, false);
      		}

    これで、投稿欄内に

    [gallery link="file"]

    などと書けば、指定サイズの画像を開くことができるようになるはずです。

    トピック投稿者 haha taduko

    (@shimodar)

    jim912さま

    丁寧にご教授くださいましてありがとうございました!
    いけそうです。

    現在、こちらでカスタマイズしていたギャラリーのコードを書き変えているところです。
    少し私には理解するに難しい箇所もありましたが、少しずつ足元確認しながら改修していきたいと思っています。

    このたびは誠にありがとうございました。
    サイトも拝見しました。

    またあちらでも素敵な記事を参考にさせていただきたいと思います。

    感謝をこめて。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「ギャラリーのサムネイルについたアンカーリンク先変更」には新たに返信することはできません。