[wp] 投稿サムネイルに記事やフル画像へのリンクを張る

WordPressに新しく実装された投稿サムネイル用のタグthe_post_thumbnail()は出力されるのが画像だけなんだけど、
これにページへのリンクとか拡大画像とかのリンクをつけたいと思うことがあったので関数作った。

構文

 the_linked_post_thumbnail($size = 'medium', $linkto = 'image', $attr = NULL) 

$size
画像のサイズ。文字列(thumbnail, medium, large, full)か配列( array(32,32) )で。

$linkto
リンク先。image=フルサイズの画像url、page=投稿記事、NULL=リンクしない

$attr
画像の属性。連想配列形式で指定する

$default_attr = array(
			'class'	=> "zoom",
			'title'	=> 'クリックで拡大',
		);

テンプレート

デフォルト:サイズ=midium、リンク先=フルサイズの画像

<?php the_linked_post_thumbnail(); ?>

サイズ=サムネイル、リンク先=投稿記事

<?php the_linked_post_thumbnail('thumbnail','page'); ?>

the_post_thumbnailと同じ:

<?php the_linked_post_thumbnail('thumbnail',NULL); ?>

functions.php

function the_linked_post_thumbnail($size = 'medium', $linkto = 'image', $attr=NULL)
{
	if ( has_post_thumbnail() ){
		$id = get_post_thumbnail_id();
		
		if(isset($linkto)){
			
			if($linkto == 'image'){
				$url = '<a href="'.wp_get_attachment_url($id).'" rel="quickbox"';
				
			}else{
				$url = '<a href="'.get_permalink(get_the_id()).'"';
			}
		
			print $url.' class="linked_post_thumbnail">'.get_the_post_thumbnail(get_the_id(),$size,$attr).'</a>';
		
		}else{
			print the_post_thumbnail($size,$attr);
		}
		
	}
}

1件のコメント

  1. Pingback: TETU BLOG
  2. 初めまして!
    初心者に近いレベルの者です。
    現サイトにてWordPress 3.1.4 のバーションで使用させてもらっていますが、
    サーバの引っ越しに伴い、WordPress 4.0.1のバージョン移行しました。
    設定は同様(だと思います)なのですが、、、うまく実装(出力)されません。

    新しいバージョンでは、使用出来ないのでしょうか?
    よろしくお願いします。

    Reply
  3. テーマが投稿サムネイルに対応してないと動かないです。
    functions.phpに add_theme_support( 'post-thumbnails' ); があるか確認してください。
    無かったら追加で。

    Reply
    • 返信ありがとうございます。
      functions.phpは以下の通りです。
      どの位置に追加すれば良いですか?

      function the_linked_post_thumbnail($size = ‘array(100,100)’, $linkto = ‘image’, $attr=NULL)
      {
      if ( has_post_thumbnail() ){
      $id = get_post_thumbnail_id();

      if(isset($linkto)){

      if($linkto == ‘image’){
      $url = ‘<a href="'.wp_get_attachment_url($id).'" rel="lightbox"';

      }else{
      $url = '‘.get_the_post_thumbnail(get_the_id(),$size,$attr).’‘;

      }else{
      print the_post_thumbnail($size,$attr);
      }

      }
      }

      ちなみに固定のページには、以下の通り設定してあります。

      ‘pets’,’posts_per_page’ => 16,’tax_query’ => array(array(‘taxonomy’ => ‘post_format’,’field’ => ‘slug’,))); ?>

      掲載:

      何かヒントになりますでしょうか?

      Reply
  4. functions.phpにadd_theme_support( ‘post-thumbnails’ );があれば、投稿ページの右下あたりに投稿サムネイルの設定が出てます。
    なければfunctions.phpファイルの先頭か、すでにadd_theme_supportが書いてある行の付近にコピペすれば投稿サムネイルが使えるようになります。

    Reply

Leave a Comment.