こちらのコードでできました。

こちらの記事を参考にさせていただきました。

こちらのテーマを参考にさせていただきました。

//ブログカード
//--------------------------------------------------------------------
if ( !function_exists( 'show_Linkcard' ) ):
function show_Linkcard($the_content) {
if(is_single()) {

	$regex = "/^(<p>)?(<a[^>]+?>)?https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+(<\/a>)?(?!.*<br *\/?>).*?(<\/p>)?/im";


	$url = preg_match_all($regex, $the_content, $matches);


	//画像サイズの横幅を指定
	$img_width ="170";
	//画像サイズの高さを指定
	$img_height = "170";

	$i = 0;
	foreach ($matches[0] as $match ) {
		$url = strip_tags($match);

	
		//OGP情報を取得
		require_once 'lib/OpenGraph.php';
		$graph = OpenGraph::fetch($url);

		//OGPタグからタイトルを取得
		$Link_title = $graph->title;
		if(!empty($title)){
			$Link_title = $title;//title=""の入力がある場合はそちらを優先
		}
			
		//OGPタグからdescriptionを取得(抜粋文として利用)
		$Link_description = wp_trim_words($graph->description, 60, '…' );//文字数は任意で変更
		if(!empty($excerpt)){
			$Link_description = $excerpt;//値を取得できない時は手動でexcerpt=""を入力
		}
		
		//wordpress.comのAPIを利用してスクリーンショットを取得
		$screenShot = 'https://s.wordpress.com/mshots/v1/'. urlencode(esc_url(rtrim( $url, '/' ))) .'?w='. $img_width .'&h='.$img_height.'';
		//スクリーンショットを表示
		$xLink_img = '<img src="'. $screenShot .'" width="'. $img_width .'" />';
		
		//ファビコンを取得(GoogleのAPIでスクレイピング)
		$host = parse_url($url)['host'];
		$searchFavcon = 'https://www.google.com/s2/favicons?domain='.$host;
		if($searchFavcon){
			$favicon = '<img class="favicon" src="'.$searchFavcon.'">';
		}
			
		//外部リンク用ブログカードHTML出力
		${'sc_Linkcard'.$i} .='
		<div class="blogcard ex">
		<a href="'. $url .'" target="_blank">
		 <div class="blogcard_thumbnail">'. $xLink_img .'</div>
		 <div class="blogcard_content">
		  <div class="blogcard_title">'. $Link_title .'</div>
		  <div class="blogcard_excerpt">'. $Link_description .'</div>
		  <div class="blogcard_link">'. $favicon .' '. $url .' <i class="icon-external-link-alt"></i></div>
		 </div>
		 <div class="clear"></div>
		</a>
		</div>';



		$the_content = preg_replace('{^'.preg_quote($match, '{}').'}im', ${'sc_Linkcard'.$i}, $the_content,1);
		
		$i++;
	}
	return $the_content;

} else {
	return $the_content;
}
}

endif;
add_filter('the_content', 'show_Linkcard');

私なりの完全版はこちら

この記事を書いた人

古川恵子。1981年福島県生まれ。東京在住。 都内でウェブ制作を行っています。福島県の会津地方でも活動しています。 制作のご相談はお気軽にご連絡ください。随時相談会を開催しています。

コメントをどうぞ!

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください