タイトル変更にも対応 SANGOでタイトルリンクを自動で取得する方法

リライトしたときにタイトル名を変えると、内部リンクを貼っている記事でもタイトルを変える必要があります。
タイトルを変えるには、サイト内で検索かけて手で直していくかプラグインで変換をかける必要があります。プラグインなら一瞬で終わりますが、たまに変換漏れがあるので油断できません。

SANGOでは自サイト内のリンクを記事を横長で表示する「関連記事を出力する(横長)」というショートコードが用意されています。
このショートコードを応用してサイト内のタイトルリンクを取得するショートコードを作ってみましょう。

SANGOを使っている人が対象

目指す姿の確認です。
編集画面では「関連記事を出力する(横長)」に近いショートコードを使います。

Kanrenlink003

記事を表示すると、このように記事タイトルがリンク形式で取得できます。

Kanrenlink004

PORIPUを使っているので更に外側に関連記事のショートコードを使っています。

Kanrenlink001

すると、このようにそれぞれの記事のタイトルが取得できます。

Kanrenlink002

functions.phpにコードを追加すればOK

以下のコードをfunctions.phpに追加してください。
使うのはリンクだけなのでcssの編集はありません。
ショートコードの名前を変えたい人は一番したのkanrenlの部分を変更してください。

functions.php

/*********************
関連記事のタイトルリンクを取得
 *********************/
function sng_entry_link_title($atts)
{
 $output = ‘’;
 $id = isset($atts[‘id’]) ? esc_attr($atts[‘id’]) : null;
 if ($id) {
 $ids = (explode(‘,’, $id)); //一旦配列に
 }
 $target = isset($atts[‘target’]) ? ’ target="_blank"’ : "";
 if (isset($ids)) {
 foreach ($ids as $eachid) {
 $url = esc_url(get_permalink($eachid)); //URL
 $title = esc_attr(get_the_title($eachid));
 if ($url && $title) {
 $output .= <<<EOF
<a href="{$url}"{$target}>{$title}
EOF;
 }
 } //endforeach
 } else { $output = ‘関連記事のIDを正しく入力してください’;}
 return $output;
}
add_shortcode(‘kanrenl’, ‘sng_entry_link_title’); //関連記事のタイトルリンクを出力

SANGOのショートコード定義先
ちなみにSANGOで使用できるショートコードはSANGOのテーマ内のstyle-shortcode.phpに記載されています。
liberary > functions > style-shortcode.php

今日のまとめ

タイトルリンクを動的に取得するようにすれば、PORIPUを使っている人は関連記事を書くときに使えます。
また、テキストで内部リンクを貼っている人も変更の手間がなくなるので便利になるので試してみてください。