投稿内で記事・ページへのリンク・URLを出力する


投稿内で自分のサイトの記事・ページへリンクを貼りたい場合があるかと思います。
直接、記事・ページのURLのリンクを貼ると、
サイト移転時や公開URLの変更があった場合にリンク切れになってしまいます。
プラグインを使ってPHPを使えるようにする方法もありますが(Exec-PHPなど)、
セキュリティ上あまりよろしくない場合もあるかと思います。
そこで他にいい方法が無いかなあ、と探していたところショートコードで記述する方法が、
T.I.D. (Technologies Inspire Design)さんの記事にて紹介されていました。

WordPressのショートコードを極める実用例題&便利プラグイン集

function.php

<?php
function permalink_handler( $atts ) {
    extract( shortcode_atts( array(
        'id'     => '',
        'text'   => '',
        'title'  => '',
        'target' => '',
    ), $atts ) );
 
    $link = get_permalink($id);
    if(!$text) { $text = get_the_title($id); }
    if($title) { $title = ' title="' . $title . '"'; }
    if($target) { $target = ' target="' . $target . '"'; }
 
    return '<a href="' . $link . '"' . $title . $target . '>' . $text .'</a>';
}
add_shortcode('permalink', 'permalink_handler')
?>

上記コードをfunciton.phpに記述し、

[permalink id=1 text="タイトルの変更が可能" title="タイトル" target="_blank"]

上記ショートコードのid=に記事・ページの番号を指定すると、その記事・ページへのリンクが出力されます。
text=””にてリンクするテキストが変更できます。

なお、このショートコードだと記事・ページのリンクが表示されますが、
URLだけ取得したい、という場合もあるんじゃないかと思います。
そこで上記のショートコードを少し変えて、URLだけ取得できるようにしてみました。

function.php

<?php
function permalink_handler( $atts ) {
    extract( shortcode_atts( array(
        'id'     => '',
    ), $atts ) );
 $link = get_permalink($id);
return $link ;
}
add_shortcode('permalink', 'permalink_handler');
?>

上記のショートコードだと、記事・投稿のURLだけを出力します。
なので、リンクとして表示したい場合は、以下のように記述します。

<a href="[permalink id=1]">リンクテキスト</a>

タグ: , ,

記事公開日:
最終更新日:

“投稿内で記事・ページへのリンク・URLを出力する” への3件のフィードバック

  1. avatar 通りすがり より:

    permalink の方、function.phpに書き込むとホワイト画面になりました・・・

    • avatar kimuray より:

      前後に余分なスペース等含まれてたりすると、エラーになる場合があるかと思います。
      また既にfunction.phpにコードが記述されていて、そこに追加する場合は、
      ?>
      の後ろにコードを記述してみてください。

  2. […] WP MEMO:投稿内で記事・ページへのリンク・URLを出力する こちらのページでidを指定してURLを取得する方法を紹介されていたので参考にさせていただきました。 ただ、個人的にidを使うの […]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)