get_permalink() の使い方|説明・引数・注意点

説明

get_permalink() は、投稿や固定ページのパーマリンク(URL)を文字列で返す関数です。

基本構文

get_permalink( int|WP_Post $post = 0, bool $leavename = false ): string|false

引数

  • $post:投稿IDまたはオブジェクト。省略するとループ中の投稿
  • $leavename:スラッグ部分を %postname% のまま返すか

戻り値

URLの文字列。取得できなければ false。

使い方(サンプル)

echo esc_url( get_permalink( 123 ) );

注意点

  • 出力時は esc_url() を通します。
  • カテゴリーのURLは get_category_link()、タームは get_term_link() を使います。

実務での使いどころ

  • 投稿や固定ページのURLを、文字列として取得するとき。
  • IDを指定して、ループの外から、特定の投稿へのリンクを作るとき。
  • メールやSNSの共有用に、URLを組み立てるとき。

よくあるミスと対処

  • 引数を省略すると、ループ中の現在の投稿が対象になる。ループの外では、意図しない投稿になる。
  • 出力するときに、エスケープしていない。esc_url() を通す。
  • 下書きや予約の投稿では、きれいなパーマリンクにならず、?p=ID 形式のURLが返る場合がある。

NG例

echo '<a href="' . get_permalink( 123 ) . '">記事</a>'; // エスケープしていない

OK例

echo '<a href="' . esc_url( get_permalink( 123 ) ) . '">記事</a>';

使い分け早見表

やりたいこと 使うもの
URLを文字列で取得 get_permalink()
現在の投稿のURLを出力 the_permalink()
カテゴリーのURLを取得 get_category_link()

関連項目

the_permalink()、get_term_link()、get_post_type_archive_link()

公式リファレンス:get_permalink() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました