記事内で、自分のサイトの過去の投稿を紹介する機会って結構ありますが、そんな時にリンクだけだとちょっと味気無く感じるものです。

例えば ↓こんな感じの。

そこで、記事のサムネイル画像とタイトルを並べたような見栄えで簡単にリンクを貼れるようなショートコードを作ってみようと思います。

でき上がりイメージは、↓こんな感じ。

[displayPost url=https://blog.ko31.com/201407/wordpress-viral-site/]

ショートコードを作る

ショートコードは下記のような仕様で作ることにします。

  • 引数は投稿URLを指定
  • 投稿のタイトル、URL、アイキャッチ画像を自動で取得して表示

まず、テーマの functions.php に下記のようなコードを追加します。

<br />
function myDisplayPost($atts) {<br />
    extract(shortcode_atts(array(<br />
        'url' =&gt; '',<br />
    ), $atts));<br />
    if (!$url) {<br />
        return false;<br />
    }<br />
    // 投稿URLからIDを取得<br />
    if ($url) {<br />
        $id = url_to_postid( $url );<br />
    }<br />
    if (!id) {<br />
        return false;<br />
    }<br />
    // 投稿のタイトル、URL、サムネイル画像を取得<br />
    $title = get_the_title( $id );<br />
    $url = get_permalink( $id );<br />
    $thumb = get_the_post_thumbnail( $id, array(100, 100), array('border'=&gt;0, 'width'=&gt;100, 'height'=&gt;100, 'style'=&gt;'display:inline; float:left; margin:0 5px 0 0;') );<br />
    if (!$thumb) {<br />
        $thumb = '&lt;img src=&quot;' . get_template_directory_uri() . '/images/no-img.png&quot; width=&quot;100&quot; height=&quot;100&quot; style=&quot;display:inline; float:left; margin:0 5px 0 0;&quot; /&gt;';<br />
    }<br />
    // 表示するHTML組み立て<br />
    $html = '&lt;a href=&quot;' . $url . '&quot;&gt;' . $thumb . '&lt;/a&gt;&lt;a href=&quot;' . $url . '&quot;&gt;' . $title . '&lt;/a&gt;&lt;br style=&quot;clear:both;&quot;&gt;';<br />
    return $html;<br />
}<br />
add_shortcode('displayPost', 'myDisplayPost');<br />

コード内に埋め込まれた html や css は適当にサイトに合わせて調整してください。

後は、add_shortcode で指定した「displayPost」がショートコード名になるので、投稿本文内で次のように書けば画像付きのリンクが表示できるようになるはずです。

<br />
[displayPost url=リンクする投稿URL]<br />

※上記の大括弧「[」「]」は半角で記述してください。

画像が入ると見た目が良くなるのはもちろん、クリックが促されて回遊率が高まる効果も期待できると思いますので、改善したいと思っている方は試してみてはいかがでしょうか。