<?php if ( !defined( 'ABSPATH' ) ) exit;//PHPの宣言と直接アクセスの拒否

/* https://dubdesign.net/web/wordpress/href-linkcard/ */
function haup_ogp_linkcards_init($atts){
	extract(shortcode_atts(array(
		'url' => '',
		'title'=>'',
		'excerpt'=>'',
		"snap" => 'https://s0.wordpress.com/mshots/v1/',
		"alt" => '',
		"load" => 'lazy'
	), $atts));

//SSLかどうかでAPIのURLを切り替え
	if(is_ssl()){
	$snap = $snap;
}else{
	$snap = 'http://s0.wordpress.com/mshots/v1/';
}

//altパラメーターがない場合の処理
if(empty($alt)){
	$alt = $url;
}else{
	$alt = $alt;
}

//loadパラメーターがない場合の処理
if(empty($load)){
	$load = 'lazy';
}else{
	$load = $load;
}

/* OGPから情報取得 */
require_once('OpenGraph.php');//OpenGraph.phpの読み込み
//ogp情報の取得
	$graph = OpenGraph::fetch($url);

//ページタイトル
if(isset($graph->title)){
	$fetch_title = $graph->title;//OGPで取得したページタイトルを変数化
}else{
	$fetch_title ='';
}

	if(!empty($title)){
		$card_title = $title;//ショートコード中のタイトル（最優先）
	}elseif(!empty($fetch_title)){
		$card_title = $fetch_title;//OGPで取得したタイトル
	}else{
		$card_title = $url;//どちらもなかった場合はURL
	}

//サイトタイトル
if(isset($graph->site_name)){
	if(!empty($site_name)){
		$site_name = $graph->site_name;
	}else{
		$site_name = '';
	}
}else{
	$site_name = '';
}

//抜粋
if(isset($graph->description)){
	$fetch_description = $graph->description;
}else{
	$fetch_description = '';
}
	
	if(!empty($exerpt)){
		$description = $excerpt;//ショートコードに値があれば（最優先）
	}elseif(!empty($fetch_description)){
		$description = wp_trim_words($fetch_description, 220, '...');
	}else{
		$description = '';
	}

//画像
if(isset($graph->image)){
	$image = $graph->image;
}else{
	$image = '';
}

	if (!empty($image)) {
		$card_img = '<img src="'.$image.'" loading="'.$load.'" width="800" height="600" alt="'.$alt.' title="'.$title.'">';
	} else {
		$card_img = '<img loading="'.$load.'" alt="'.$alt.'" src="'.$snap.urlencode(esc_url(rtrim( $url, '/' ))).'?w=800&h=600" title="'.$title.'"/>'; //画像がない時はスクリーンショット
	}

//カード表示
$linkcard = hau_sanitize_html_tags('
  <div class="ha-ogp-blogcard">
		<a href="'.$url.'" target="_blank" rel="noopener noreferrer">
		<p class="ogp-bcard-title">'.$card_title.'</p>
		<div class="ogp-bcard-content">
			<div class="ogp-bcard-thumbnail">'.$card_img.'</div>
			<div class="ogp-bcard-description"><p>'.$description.'</p></div>
		</div>
		<div class="ogp-bcard-sitename">'.$site_name.'</div>
		</a>
	</div>
');

	return $linkcard;
}
add_shortcode("ha-linkcard", "haup_ogp_linkcards_init");

