更新日2016/04/16 この記事は約 2 分で読めます。

たった1行!WordPressでカスタムフィールドのURLから自動的にスクリーンショットを撮る方法。プラグイン不要!

Wordpressでスクリーンショットをアイキャッチやサムネイルにしたいなと言うときありますよね。
さらにカスタムフィールで設定したURLから取得できたら簡単だなと思ったことありませんか?

「記事が1000記事もあるから、いちいち変えてられないよ!」
「そう思いますか?」

そんな横着をたった「1行」で実現する方法をご紹介します。

まずこのコードをコピペします

このソースは参照元から頂いたソースですが、このまま使います。

function.phpへ追加します。一番下で良いです。

/*-------------------------------------------*/
/* WordPress APIでスクリーンショットを表示するショートコード
/*-------------------------------------------*/
function get_wp_screenshot($attr) {
	extract(shortcode_atts(array(
		// デフォルト設定
		'url' => '',
		'alt'  => '',
		'class' => '', // imgタグに付加するclass名
		'width' => 0, // 画像の幅(0の場合はwidthタグを出力しない)
		'link' => 0 // 0:リンクしない 1:リンクする
	), $attr));
	if ($url == '') {
		return;
	}
	$image = 'http://s.wordpress.com/mshots/v1/' . urlencode(clean_url($url));
	if ($width > 0) {
		$height = floor($width/4*3);
		$image .= '?w=' . $width;
		$image_wh = ' width="' . $width . '" height="' . $height . '"';
	}
	if ($class != '') {
		$image_wh .= ' class="' . $class . '"';
	}
	$image = '<img src="' . $image . '" alt="' . $alt . '"' . $image_wh . '>';
	if ($link == 1) {
		$image = '<a href="' . $url . '" target="_blank">' . $image . '</a>';
	}
	return $image;
}
add_shortcode('wpshot','get_wp_screenshot');

WordPressテーマに記述

これのショートコードを使います。

<!-- 記事本文で利用可能 -->
[
wpshot url="スクリーンショット取りたいURLを記述" width="幅" alt="説明" class="クラス名"
]
<!-- []で括ると変換されるため改行していますが、本来は1行です。 -->

このままだと、テンプレート本文には使えませんのでPHPに書き換えます。
その時必要なコードは

<!-- テーマ内で使用可能 -->
echo do_shortcode('[ショートコード]');

このコードが必要です。
この2つのコードを合体させます。

<!-- テーマ内で使用可能 -->
echo do_shortcode('[
wpshot url="スクリーンショット取りたいURLを記述" width="800" alt="" class="sshot"
]');
<!-- []で括ると変換されるため改行していますが、本来は1行です。 -->

このままでも十分機能しますが、
「折角設定したカスタムフィールドのURLを追加したいんだ!」

「今まで設定した記事が1000記事もあるんだ!」

「そう思いましたか?」

それでは、完成したたった1行をご紹介。

WordPressのカスタムフィールのURLから取得する

仕上げに echo内にPHPを記述します。

カスタムフィールドの値が、cfurl だとします。

さっきのコードに 合わせると、

<!-- テーマ内で使用可能 -->
echo do_shortcode('[
wpshot url="' .post_custom('cfurl'). '" width="800" alt="" class="sshot"
]'); 
<!-- []で括ると変換されるため改行していますが、本来は1行です。 -->

これがたった1行で実現する方法です。
※function.phpでコピペした内容は除く。

 

まとめ

  1. function.phpへ貼り付ける
  2. 本文へ1行コードを入れる

たったこれだけです。
簡単ですね。

参考サイト

参考にさせていただいたサイトをご紹介します。
http://m.designbits.jp/12071410/

「たった1行!WordPressでカスタムフィールドのURLから自動的にスクリーンショットを撮る方法。プラグイン不要!」への2件のコメント

  1. 山田健太 より:

    カスタムフィールドの値が、cfurlをどこにいれますか?

    1. ご連絡ありがとうございます。
      半角[]でソースを記載したところ、変換されておりました。
      修正致しましたのでご確認下さい。
      []で改行しておりますが、本来は1行です。

たった1行!WordPressでカスタムフィールドのURLから自動的にスクリーンショットを撮る方法。プラグイン不要!へコメントをする

※メールアドレスは公開されません。