目次
ブログカードって?
ブログカードはもともと “はてなブログ” にあった機能で、下の画像の様なもの指します。
“はてなブログ” を確認すると、次の様に書かれていました。
「ブログカード」とは、ブログに掲載したい記事のタイトルや概要、アイキャッチ画像などを読みやすくまとめて表示する埋め込み形式です。
はてなブログで「リンク挿入」機能を利用する際に、さまざまな Webページを、タイトルや概要がコンパクトにまとまった ブログカードの形式で埋め込むことができます。
わたし自身は “はてなブログ” を利用したことがなく、お恥ずかしながら「ブログカード」という名前も知らなかったのですが、たまに他の WordPress サイトで見かけることがあり、ちょっと興味があったので調べてみることにしました。
WordPress 公式のブログカードの機能がある
WordPress には、ブログカードを表示する機能が備わっています。
本当に何も難しいことはなくて、ただリンクを記述するだけなんです。
※ビジュアル・テキストどちらでも OK。
https://startmeup.jp/column/digital/1142/
リンクを記述して表示されたブログカードがこちら。
テキストリンク↓ とは比べ物にならないくらい目立ちますね!
【プラグイン不要】WordPressで構築したウェブサイトにdescriptionタグを簡単に設定する方法
ブログカード形式で表示される条件
ただし、リンクからブログカード形式で表示するには、以下の 4項目を全て満たしていることが条件となります。
- WordPress のバージョンが 4.4以降であること
- 自分自身のウェブサイトの URL であること
- URL は 1行に 1 URLを記述すること
- URL の前後には余分なテキストや空白を挿入しないこと
プラグインを使って生成する
ブログカードを生成する「Pz-LinkCard」という無料プラグインも見つかりましたが、サイトが重くなるというコメントが書かれていました。
プラグインに頼らなくても簡単に実装できそうでしたので、プラグインでの実装方法については省略します。
プラグインを使わずにブログカードを自作する
WordPress の公式のブログカードをそのまま使っても良いのですが、簡単に作れそうだったので今回は自作することに。
まずは完成形からどうぞ。
functions.php にコードを追加
functions.php に下記のコードをコピペします。
バックアップ忘れずに!
// 記事IDを指定して抜粋文を取得 function ltl_get_the_excerpt($post_id){ global $post; $post_bu = $post; $post = get_post($post_id); setup_postdata($post_id); $output = get_the_excerpt(); $post = $post_bu; return $output; } // 内部リンクをはてなカード風にするショートコード function nlink_scode($atts) { extract(shortcode_atts(array( 'url'=>"", 'title'=>"", 'excerpt'=>"" ),$atts)); $id = url_to_postid($url); // URLから投稿IDを取得 $no_image = 'noimageに指定したい画像があればここにパス'; // アイキャッチがない場合の画像を指定 // タイトルを取得 if(empty($title)){ $title = esc_html(get_the_title($id)); } // 抜粋文を取得 if(empty($excerpt)){ $excerpt = esc_html(ltl_get_the_excerpt($id)); } // アイキャッチ画像を取得 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.'" />'; } $nlink .=' <div class="blog-card"> <a href="'. $url .'"> <div class="blog-card-thumbnail">'. $img_tag .'</div> <div class="blog-card-content"> <div class="blog-card-title">'. $title .' </div> <div class="blog-card-excerpt">'. $excerpt .'</div> </div> </a> </div>'; return $nlink; } add_shortcode("nlink", "nlink_scode");
style.css にコードを追加
続いて style.css に下記コードを追加します。
.blog-card { width: 100%; background-color: #f5f5f5; border: 1px solid #dddddd; word-wrap: break-word; margin: 20px 0; padding: 0; box-sizing: border-box; } .blog-card:hover { background-color: #e8f0f8; } .blog-card a { display: -webkit-flex; display: -moz-flex; display: -ms-flex; display: -o-flex; display: flex; justify-content: space-between; padding: 10px; } .blog-card-thumbnail { width: 28%; } .blog-card-thumbnail img { width: 100%; border: none; } .blog-card-content { width: 70%; } .blog-card-title { font-size: 15px; font-weight: bold; line-height: 1.6; margin: 0 0 10px; } .blog-card-excerpt { color: #333333; font-size: 12px; line-height: 1.5; }
モバイルではアイキャッチとタイトルだけにする
デバイスの幅が 600px以下で「抜粋」を非表示にするには、続けて下記のコードを style.cssに 追加します。
@media only screen and (max-width: 600px) { .blog-card-title { margin: 0; } .blog-card-excerpt { display: none; } }
デバイスの幅が 600px以下でも「抜粋」を非表示にはせず、アイキャッチ・タイトル・抜粋を縦に並べるにはこちら。
@media only screen and (max-width: 600px) { .blog-card a { flex-direction: column; padding: 15px; } .blog-card-thumbnail, .blog-card-content { width: 100%; } .blog-card-thumbnail { margin: 0 0 15px; } }
ブログカードを実装するためのショートコード
[nlink url="https://startmeup.jp/column/digital/1142/"]
完成!