ワードプレス記事の途中で関連記事表示
2023年07月12日
本日はワードプレスでブログなどを書く際に文章の途中で関連記事をサムネイル付き画像とタイトル・抜粋を表示する方法を勉強したので記事にしたいと思います。
下記のようなものです。

著名なブロガーさんのブログでよくみる線で囲ってあって関連記事とか書いてあってサムネイルとかタイトルとか抜粋をいれているやつです。
ちょっと脱線しますが、上記のような関連記事リンクをいれたくて、
「ワードプレス 関連記事表示」
とかで検索しても関連度の高い記事を自動的に出力するような記事ばかりで、上記のタイプのやつになかなかたどり着きませんでした。
プラグインかな?functionc記入かな?、まーアイキャッチがあるから直接HTMLを書くわけじゃないだろうし・・・
て感じで
そして20分ぐらいネットをうろうろして
ブログカード
この言葉にたどり着きました。
恥ずかしながら、webに携わって8年程度・・・
知りませんでした。
ブログカードという言葉
カードの様に装飾して表示させることみたいですね。
あまり、ブログを書いたことがないとはいえ・・・知りませんでした。
ここがチェケラ
知らないのは恥ではない。知ろうとしないのが恥である。
ってことで、話をもどして、ブログカードの作り方を書いていきたいと思います。
- ブログカードを作りたい
- 私も知らなかった
- 記事は若干いい加減でもいい
- 少しでも為になれば
今回はプラグインなしで、functions.phpに書き込んで制作する方法で作りました。
そのまま記事にURLを張り付けてもブログカードのようなものができますが、サイズも大きくカスタマイズもできません。

こんな感じで大きく表示されます。
ちょっと大きいし、カスタマイズもできません。
作り方はプラグインかfunctions.phpに記述するかってとこで、プラグインはとても便利ですが、軽量化のためと、今回はカスタマイズもしやすかったのでfunctions.phpに記述する方法でブログカードを設置いたしました。
設置方法
functions.phpに下記をコピペするだけです。
//ブログカード用コード
// 記事IDを指定してdescriptionを取得
function ltl_get_the_excerpt($post_id){
global $post;
$post_bu = $post;
$post = get_post($post_id);
setup_postdata($post_id);
//AllinOneSEOを使っている場合:そのままでOK
//$output = get_post_custom()['_aioseo_description'][0];//AllinOneSEOの場合
//YoastSEOを使っている場合:上記のコードを以下のコードに変更する
//$output = get_post_meta($post_id,'_yoast_wpseo_metadesc',true);//YoastSEOの場合
//どっちも使っていない場合:上記のコードを以下のコードに変更する
$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 = '';//アイキャッチ画像がない記事に使う画像URL
//記事タイトルを取得
if(empty($title)){
$title = esc_html(get_the_title($id));
}
//descriptionを取得
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),'medium');
$img_tag = "<img src='" . $img[0] . "' alt='{$title}'/>";
}else{
$img_tag ='<img src="'.$no_image.'" alt="" width="'.$img_width.'" height="'.$img_height.'" />';
}
$nlink .=' <div>
<a class="card-link longcard-link" href="'. $url .'" title="'.$title.'" target="_blank" rel="noopener">
<span class="longcard-img">'. $img_tag .'</span>
<span class="blogcard-content blogcard-text">
<span class="blogcard-title">'. $title .' </span>
<span class="blog-card-excerpt-long">'. $excerpt .'</span>
</span></a></div>';
return $nlink;
}
add_shortcode("nlink", "nlink_scode");8から13行目は抜粋の部分だと思いますが、対象のプラグインを使っていたら、コードを変更しないといけないようです。
マリオ君は使っていなかったのでどっちも使っていない場合を使用しています。使っている場合は13行目を消して、対象のコードを使用してください。
後変更しないといけないところは28行目
こちらはアイキャッチ画像がなかった場合の画像URLを入れるみたいです。
アイキャッチの出力ループでない場合の設定をしている場合はいらなそうですね。
で重要なのが
47行目から53行目ですね
ここをいじって自由にカスタマイズできます。
//下記がリンクを出力
'. $url .'
//下記がアイキャッチを出力
'. $img_tag .'
//下記がタイトルを表示
'. $title .'
//下記が抜粋を表示
'. $excerpt .'上記タグをうまく使って自由自在にできます。
マリオ君は抜粋は使いませんでした。
マリオ君はこんな感じにカスタマイズしました
$nlink .=' <div>
<a class="card-link longcard-link" href="'. $url .'" target="_blank" rel="noopener">
<div class="longcard-img">'. $img_tag .'</div>
<div class="card_r">
<div class="kanren">関連こっちもみてね</div>
<h6 class="blogcard-title">'. $title .' </h6>
</div>
</a>
</div>';CSSはこんな感じ
//ブログカード用CSS
.card-link{
display: flex;
align-items: center;
padding: 20px;
border:3px solid #EEE;
@media screen and (max-width: 767px) {
padding: 15px;
}
.longcard-img{
width:20%;
min-width: 100px;
margin: 0 30px 0 0;
@media screen and (max-width: 767px) {
width:45%;
margin: 0 20px 0 0;
}
img{
width: 100%;
}
}
.card_r{
flex: 1;
}
.kanren{
background: $b01;
display: inline-block;
border-radius: 5px;
padding: 5px 10px;
margin: 0 0 5px;
font-size: 1.3rem;
color: #FFF;
position: relative;
@media screen and (max-width: 767px) {
font-size: 1.0rem;
padding: 3px 8px;
}
&::before {
content: "";
position: absolute;
top: 100%;
left: calc(50% - 10px/2);
border: 5px solid transparent;
border-top: 5px solid $b01;
}
}
h6{
font-size: 1.7rem;
@media screen and (max-width: 767px) {
font-size: 1.4rem;
}
}
}
フレックスで左右にわけて、アラインアイテムでセンターにしているだけです。
あとは関連こっちも見てね。を吹き出し風に入れています。
基本的にfunctions.phpにコピーした47行目から53行目をお好きなHTMLで組んでCSSで装飾するだけです。
それでは準備ができたので、あとは表示させたいとこにショートコードで下記コードを入れるだけです。
[nlink url="リンクさせたいぺージのURLをここにコピー"]
ショートコードは

上記でショートコードを開いて下記を張り付けて完了です。
[nlink url="リンクさせたいぺージのURLをここにコピー"]
こんな感じ

以上でワードプレス記事の途中で関連記事表示するブログカードの作り方でした。
今回参考にさせていただいたサイト様はこちらです。
ブログカード勉強になりました。
また、ブログカードは乱立せずに、要所で必殺技の様に使うとのこと。
これまた勉強になります。
ありがとうございました。
それではまた。
こっちもみて!関連記事
-
グーテンベルク ブロックを見やすくする方法
- WordPress
2023年08月09日
-
Custom Post Type UI 使用見本・ポイント
- WordPress
2023年06月28日
-
ワードプレス ファビコン表示方法完全網羅!?
- WordPress
2023年08月10日
-
ワードプレス 次の記事・前の記事制作 コピペOK
- WordPress
- コピペ
2023年07月13日
-
ワードプレスオリジナルテーマ作り方④ トップページ作成
- WordPress
- 自社ホームページ制作道のり
2023年05月22日
-
ワードプレスwww有り無しを統一・ロリポップは少し注意
- SEO
- WordPress
- コピペ
2023年07月14日