当サイトには広告が含まれております

自サイト投稿へのリンクをpostIDだけで表示するショートコード

この記事は最終更新日から8年経過しています。内容が古い可能性があります。

Image

blogの中で自サイトの投稿へのリンクを貼るということが何度もあります。気をつけないと、「【未解決→解決しました】思い当たらないコメントが来る ピンバックって?」のように、自サイトへのリンクがピンバックになってしまったりして面倒くさいです。

ということでショートコードで簡単に自サイトの投稿へのリンクを付けられるようにしてみました。

記事をざっと見る

今現在の自サイトへ投稿へのリンクの付け方

例えば、昨日のblog記事へのリンクを貼ってみましょう。

まずはその投稿を別タブで表示します。そして、

Image

タイトルをコピーして、

Image

投稿フォームに貼り付けます。それから、

Image

urlをコピーするのですが、httpからだとセルフピンバックになってしまうので /blog/ のところからをコピーします。

コピーしたものを先ほどの投稿フォームのタイトル

Image

Image

リンクとしてはりつけます。これで、

Image

このように表示されました。ちょっと手数が多くて面倒くさいなといつも思っていました。

ショートコードにpostIDを指定すればリンクしてくれるショートコード

子テーマfunctions.phpに以下のコードを追加しました。

/* 投稿記事に別の投稿へのリンクを表示する */
function ryus_another_post_link($atts) {
    $home = home_url('/');
    $linkString = '<a href="'. $home. '%s/" target="_blank">%s</a>'; // 表示したいリンクのひな形。サイトによって異なるので適宜変更する(targetとか)
    /* 引数を展開する */
    extract(
        shortcode_atts(
            array(
                'id' => ''
            ),
            $atts
        )
    );
    if($id != ''){
        // idから投稿情報を取得
        $anotherPost = get_post($id);
        if (is_object($anotherPost)){
            return sprintf($linkString, $anotherPost->post_name, $anotherPost->post_title);
        }
    }
    return $id;
}
/* ショートコードを追加する */
add_shortcode('ryus_another_post_link', 'ryus_another_post_link');

使い方としては、

[ryus_another_post_link id=表示したい投稿のid]

投稿記事に書くことで、リンクが表示されます。ここで id としているものは引数と呼ばれるもので、後ほど説明しますね。

Image

このように記述すると、

Image

このように表示されるようになりました。今までよりぐっと簡単にリンクが張れるようになりました(^^)/

なお、idで投稿記事が見つからなかった場合は指定されたidがそのまま表示されるようにしてあります。

ショートコードの書き方をもう一歩進めました 引数を使う

ちょっと前に「 [ryus_another_post_link id=3496]」でショートコードの書き方について書いたのですが今回はそこから一歩進めして、引数を追加してみました。

引数というのは今回のpostIDのように外から指定する値です。functions.phpに追加したコードで、

function ryus_another_post_link($atts) 

の()内にある$attsが引数の配列です。これを

    extract(
        shortcode_atts(
            array(
                'id' => ''
            ),
            $atts
        )
    );

とすることで $id という変数に渡された引数が入ります。もしidという引数がなければ => で指定されたデフォルト値(この場合は空文字)が入ります。

これでショートコードを使って色々な表示をすることができるようになります。

おまけ:postIDはどこにある?

postIDはログインしていればその投稿の編集リンクに入っています。

編集をクリックすると、

https://usortblog.com//wp-admin/post.php?post=3496&action=edit

このようなurlになり、 post=3496 の 3496 がpostIDとなります。

もっと簡単に見るには投稿記事のソースで postid という文字列を検索するといくつも postid=3496 のようになっていますので、その数字がpostIDです。

この記事が気に入ったら
いいね または フォローしてね!

あなたのシェアが励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

コメントを残す

記事をざっと見る