プラグインなしでリンクカードを設定
※内部リンクのみ対応
①function.phpに以下を記述
//内部リンクをブログカードにするショートコード
function show_blogcard($atts) {
extract(shortcode_atts(array(
'url'=>"",
'title'=>"",
'excerpt'=>""
),$atts));
//URLから投稿のIDを取得
$id = url_to_postid($url);
//画像サイズ横幅を指定
$img_width ="100";
//画像サイズ高さを指定
$img_height = "100";
//アイキャッチ画像がない場合の画像を指定
$no_image = '任意画像のURLをここに入れる';
//タイトルを自動で取得
if(empty($title)){
$title = esc_html(get_the_title($id));
}
//本文を自動で取得
if(has_excerpt($id)){
//抜粋文字列がある場合
$excerpt = wp_trim_words(get_the_excerpt($id), 72, '…' );
} else {
//抜粋文字列がない場合本文から取得
$excerpt = wp_trim_words(strip_shortcodes(get_post($id)->post_content), 72, '…' );
}
//アイキャッチ画像を取得
if(has_post_thumbnail($id)) {
$img = wp_get_attachment_image_src(get_post_thumbnail_id($id),array($img_width,$img_height));
$img_tag = '<img src="'. $img[0] .'" alt="'. $title .'" width="'. $img[1] .'" height="'. $img[2] .'" />';
} else {
$img_tag = '<img src="'. $no_image .'" alt="" width="'. $img_width .'" height="'. $img_height .'" />';
}
//ブログカードのHTML
$sc_blogcard .='
<div class="blogcard">
<a href="'. $url .'">
<div class="blogcard-img">'. $img_tag .'</div>
<div class="blogcard-content">
<div class="blogcard-title">'. $title .'</div>
<div class="blogcard-excerpt">'. $excerpt .'</div>
</div>
<div class="clear"></div>
</a>
</div>';
return $sc_blogcard;
}
//ショートコード
add_shortcode("blogcard_sc", "show_blogcard");
②CSSに以下を記述
/*--------------------------------------
ブログカードのレイアウト
--------------------------------------*/
.blogcard {
width: 100%;
margin: 30px 0 40px;
line-height: 1;
background-color: #ffffff;
border: 3px solid #eeeeee;
word-wrap: break-word;
}
.blogcard a {
color: #000;
text-decoration: none;
opacity: 1;
transition: all 0.2s ease;
}
.blogcard a:hover {
color: #5a91cd;
opacity: 0.8;
}
.blogcard-img {
float: left;
padding: 20px;
}
.blogcard-title {
font-size: 1em;
font-weight: bold;
line-height: 1.4;
padding: 17px 20px 10px;
}
.blogcard-excerpt {
font-size: 0.85em;
line-height: 1.6;
padding: 0 17px 15px 20px;
}
/** ブログカードモバイル用のレイアウト **/
@media screen and (max-width: 768px) {
.blogcard {
margin: 40px 0;
}
.blogcard-title {
font-size: 0.95em;
padding-bottom: 17px;
}
.blogcard-excerpt {
display: none;
}
}
③HTML本文に以下を記述
[blogcard_sc url="https://sample.com/aaa"]