※当サイトにはプロモーションが含まれています。
THORのサイトカード(内部記事リンク)に変な文字列が表示されるから何とかしてくれ!
おけまるだにゃ。
ワードプレス(WordPress)テーマの“THE THOR(ザ・トール)”には、ブログ内の記事へ簡単に内部リンクを設置できる「サイトカード(内部記事リンク)」機能があります。

この機能を使うことで、関連記事への導線を手軽に設置することができます。
ただ、このサイトカード内に表示される説明文には、意図しない文字列が表示されることがあります。

“吹出しの名前”や“ショートコード”が表示されているにゃ。
そのため、今回は“THE THOR”のサイトカード(内部記事リンク)に表示される内容を修正する方法についてまとめてみました。
このカスタマイズに関する内容と注意点
サイトカード(内部記事リンク)に表示される内容を修正するカスタマイズについて、この記事では次の3つを解説しています。
- 説明文の文字数を変更する
- 不要な文字列を除去する
- ショートコードを無視する
なお、今回紹介する修正は、親テーマを直接編集しています。
そのため、今後THORがアップデートされた際に、修正内容が上書きされたり、他のファイルとの整合性が取れなくなったりして、意図しない表示になる可能性があります。
適用する際は、その点にご注意ください。
また、2025年3月時点では最新の“THOR バージョン2.5.2”をもとに解説しています。
THORのバージョンが異なる場合は、参考例として掲載しているコードの内容や記述箇所が異なる可能性があります。
そのため、作業前に現在使用しているTHORのバージョンを確認してください。
サイトカード(内部記事リンク)のカスタマイズについて
THORの“サイトカード(内部記事リンク)”の表示内容をカスタマイズする方法についてです。
①親テーマにあるsitecard.phpをダウンロードする
(WinSCPやFileZillaなどの)FTPソフトを使用して、ローカルホスト(自分のパソコン)に、親テーマにあるsingle-related.phpをダウンロードします。
なお、フォルダの構成は、概ね下記のようになっていると思います(※さくらインターネットの場合)。
/home/(あなたが契約した名前)/www/(あなたが作成したフォルダ名)/wp-content/themes/the-thor/inc/shortcode

②sitecard.phpの内容を確認する
まずは、sitecard.phpの内容を確認していきます。
下記は、sitecard.phpのサイトカード(内部記事リンク)に表示される説明文に関わるコードです。
$post = get_post($id);
// 記事内容取得
$description = apply_filters('get_the_content', $post->post_content);
// タグの除去(null対策付き)
$description = strip_tags((string) $description);
// 120文字以降を[…]に変換(null対策付き)
$description = mb_substr((string) $description, 0, 120) . '[…]';
// [outline]を除去
$description = str_replace('[outline]', '', $description);
実際のコードを画像で表示すると以下の部分になります。

sitecard.phpでは、記事本文を取得したうえで、HTMLタグの除去や文字数の調整、特定の文字列の削除をおこなっています。
そのため、これらの処理に対して修正・追記することで、サイトカード(内部記事リンク)に表示される内容を調整することができます。
※ダウンロードしたsitecard.phpは必ずコピーを取っておき、何かトラブルがあった際には元に戻せるようにしておいてください。
③各カスタマイズ方法について
それでは、ここから「説明文の文字数を変更」「不要な文字列を除去」「ショートコードを無視」の3つについて、それぞれ解説していきます。
説明文の文字数を変更するには?
サイトカードに表示される説明文の文字数を変更するには、次の部分を修正します。
// 120文字以降を[…]に変換(null対策付き)
$description = mb_substr((string) $description, 0, 120) . '[…]';
この120という数値が、抜粋する文字数を指定している部分です。
たとえば、この数値を100に変更すると、説明文は100文字まで表示されるようになります。
// 120文字以降を[…]に変換(null対策付き)
$description = mb_substr((string) $description, 0, 120) . '[…]';
不要な文字列を除去するには?
記事の冒頭に、吹き出し形式の会話文を入れている方も多いと思います。
賢威では、リンクカードにした際に会話文が自動的に除外されますが、THORでは会話文も説明文として表示されます。
それだけであればまだよいのですが、吹き出し内の名前まで表示されてしまう点が、個人的には気になりました。

そこで、このような不要な文字列を除去するには、次の部分を修正します。
// [outline]を除去
$description = str_replace('[outline]', '', $description);
str_replace()は、説明文内の特定の文字列を別の文字列に置き換えるための関数です。
今回は、この処理を利用して、吹き出しの名前として使われている文字列も説明文から除外するように指定します。
実際のコードは、次のようになります。
$description = str_replace( ['[outline]', '大谷翔平', 'ムーキーベッツ'], '', $description );
これで、大谷翔平とムーキーベッツという文字列が説明文から除外されるようになるにゃ。
ショートコードを無視するには?
前回の記事の続きとして、記事の冒頭にリンクカードを設置しているケースもあるかと思います。
THORでは、そのような場合、ショートコードを利用していることも多いと思いますが、このショートコードは、[blogcard url=https …]のような文字列が説明文に表示されてしまいます。
そこで、ショートコード自体を説明文から除外するために、次のような記述を追加します。
// 本文をそのまま取得(ショートコードは展開しない)
$description = isset($post->post_content) ? (string) $post->post_content : '';
// ショートコードを除去
$description = strip_shortcodes($description);
// 念のため、[] で囲まれた文字列も除去
$description = preg_replace('/\[[^\]]*\]/u', '', $description);
// HTMLタグを除去
$description = strip_tags($description);
なお、このコードでは [を含む記述をショートコードとして扱う前提になっているため、たとえば、[Ctrl+C]のような表記を使用した場合も、その部分は削除対象となります。
④コード完全版
それぞれのカスタマイズ方法について、解説しましたが実際にどのようなコードになるのかイメージがつかめない方もいらっしゃると思うので、コードの完全版も記載しておきます。
functionから始まっているので注意してください(※phpの開始タグが必要)。
function fit_get_sitecard($atts) {
extract(shortcode_atts(array(
'url'=>"",
'subtitle'=>"関連記事",
'target'=>"self",
),$atts));
$id = url_to_postid($url);//URLから投稿IDを取得
if($id != '0') {
// URLから投稿IDが取得できたとき
$thumbnail = get_the_post_thumbnail($id,'icatch375');
if (empty($thumbnail)) {
if ( get_fit_noimg()){
$thumbnail = '<img width="150" height="150" alt="IMG" '.fit_correct_src().'="'.get_fit_noimg().'" '.fit_dummy_src().'>';
}else{
$thumbnail = '<img width="150" height="150" alt="IMG" '.fit_correct_src().'="'.get_template_directory_uri().'/img/img_no_thumbnail.gif" '.fit_dummy_src().'>';
}
}
$title = esc_html(get_the_title($id));
$post = get_post($id);
// 本文をそのまま取得(ショートコードは展開しない)
$description = isset($post->post_content) ? (string) $post->post_content : '';
// ショートコードを除去
$description = strip_shortcodes($description);
// 念のため、[] で囲まれた文字列も除去
$description = preg_replace('/\[[^\]]*\]/u', '', $description);
// HTMLタグ除去
$description = strip_tags($description);
// 不要文字列を除去
$description = str_replace(array('[outline]', '大谷翔平', 'ムーキーベッツ'), '', $description);
// 空白・改行を整理
$description = preg_replace('/\s+/u', ' ', $description);
$description = trim($description);
// 100文字以降を[…]に変換
$description = mb_substr($description, 0, 100) . '[…]';
$eyecatch_class = '';
if (get_option('fit_bsEyecatch_hover') != 'off') {
$eyecatch_class = ' eyecatch__link-' . get_option('fit_bsEyecatch_hover');
}
$sitecard = '';
if ($url) {
$sitecard = '
<div class="sitecard">
<div class="sitecard__subtitle">'.$subtitle.'</div>
<div class="sitecard__contents">
<div class="heading heading-secondary"><a href="'. $url .'" target="_'. $target .'">'. $title .'</a></div>
<p class="phrase phrase-tertiary">'. $description .'</p>
</div>
<div class="eyecatch eyecatch-11"><a class="eyecatch__link'.$eyecatch_class.'" href="'. $url .'" target="_'. $target .'">'.$thumbnail.'</a></div>
</div>';
}
return $sitecard;
}
}
add_shortcode("sitecard", "fit_get_sitecard");
なお、このコードはすべての方に最適化されているわけではないので、前項の内容を参考にしながら、ご自身の目的に合わせて調整してください。
⑤sitecard.phpをアップロード
最後に、FTPソフトなどを使って編集したsitecard.phpを元の場所にアップロードし直します。
アップロード先は、最初にダウンロードしたファイルと同じ場所だにゃ。
このファイルが反映されると次のように表示されるようになりました。

もし、画面が真っ白になるなどのトラブルが発生した場合は、あらかじめ保存しておいた元のファイルを同じ場所に再アップロードすれば、元の状態に戻せます。
以上、THORのサイトカード説明文の変更方法についてでした。







ご支援のお願い
この記事が役に立ったと感じたら・・・
この記事が少しでもお役に立ったと感じていただけましたら、ぜひ下の“ボタン”をクリックしてお買い物をしていただけると嬉しいです。
ご購入いただいた商品の金額の一部が私に入り、より有益な記事を作るための励みになります。
なお、商品は、ご自身の好きなものをご購入いただければと思います。
無料相談・お問い合わせはこちら