説明
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

コメント