ワードプレス記事の途中で関連記事表示 | 福岡のホームページ制作はマリオ君にお任せ

為にならないブログ

見出しおじさん

BLOG

ワードプレス記事の途中で関連記事表示

2023年07月12日

ワードプレス記事の途中で関連記事表示

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

下記のようなものです。

ブログカード

著名なブロガーさんのブログでよくみる線で囲ってあって関連記事とか書いてあってサムネイルとかタイトルとか抜粋をいれているやつです。

ちょっと脱線しますが、上記のような関連記事リンクをいれたくて、

「ワードプレス 関連記事表示」

とかで検索しても関連度の高い記事を自動的に出力するような記事ばかりで、上記のタイプのやつになかなかたどり着きませんでした。

プラグインかな?functionc記入かな?、まーアイキャッチがあるから直接HTMLを書くわけじゃないだろうし・・・

て感じで

そして20分ぐらいネットをうろうろして

ブログカード

この言葉にたどり着きました。

恥ずかしながら、webに携わって8年程度・・・

知りませんでした。

ブログカードという言葉

カードの様に装飾して表示させることみたいですね。

あまり、ブログを書いたことがないとはいえ・・・知りませんでした。

ここがチェケラ

ポイントです

POINT

知らないのは恥ではない。知ろうとしないのが恥である。

ってことで、話をもどして、ブログカードの作り方を書いていきたいと思います。

こんな方に向いている記事

  • ブログカードを作りたい
  • 私も知らなかった
  • 記事は若干いい加減でもいい
  • 少しでも為になれば

今回はプラグインなしで、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をここにコピー"]


こんな感じ

以上でワードプレス記事の途中で関連記事表示するブログカードの作り方でした。

今回参考にさせていただいたサイト様はこちらです

ブログカード勉強になりました。

また、ブログカードは乱立せずに、要所で必殺技の様に使うとのこと。
これまた勉強になります。

ありがとうございました。

それではまた。

カテゴリー

気になったら
連絡してね!

すいません

お電話は出れないことが多いので
ラインでもしもし・メールでもしもしが推奨です。

お時間をとらせていただきゆっくり
お電話させていただきます。

©Copy Rights MARIOKUN.All Rights Resarved.
Page Top
お問い合わせ

どうぞおじさん

作業中はお電話は出れないことが多いのでライン・メールでもしもしが推奨です。

お電話は出れないことが多いの折り返し致します。