the_permalink()
は、現在表示している投稿の固定リンク(パーマリンク)を取得し、画面に出力するテンプレートタグです。リンク形式での投稿タイトル表示やSNS共有リンク作成など、投稿のURLを使う場面で頻繁に使用されます。
機能の説明
the_permalink()
は、現在の投稿や固定ページのURL(パーマリンク)を出力します。この関数は、その場でHTMLに直接リンクを表示するためのもので、単にURLを返すわけではありません。
シンプルなコード例
<?php the_permalink(); ?>
このコードは、現在の投稿のパーマリンクを出力します。
使い方の解説
the_permalink()
は、投稿単体のURLを表示したいときに使います。例えば、投稿のタイトルにリンクを設定する場合に便利です。
- このタグを使うとHTMLにそのままURLが表示されるため、リンクテキストなどは別途指定する必要があります。
- リンク自体を取得する場合は、
get_permalink()
という関数を使用します。
投稿タイトルにリンクを設定する
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<a>
タグのhref
属性にthe_permalink()
を使って、投稿のパーマリンクをセット。the_title()
で投稿のタイトルをリンクテキストにします。
一緒に使うことが多い関連タグ
get_permalink()
get_permalink()
は、the_permalink()
と違い、パーマリンクを返り値として取得する関数です。取得したURLを変数に代入し、条件によって処理を分けたい場合に使います。
$link = get_permalink();
echo '<p>投稿のリンクはこちら: <a href="' . esc_url( $link ) . '">' . $link . '</a></p>';
get_permalink()
で取得したURLを変数に代入し、表示に利用。esc_url()
でURLをエスケープし、安全に出力します。
the_title()
the_title()
は、投稿のタイトルを出力するテンプレートタグです。タイトルにリンクを設定する際に、the_permalink()
とセットでよく使用されます。
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
get_the_permalink()
get_the_permalink()
は、特定の投稿IDを指定して、その投稿のパーマリンクを取得する関数です。
<?php echo get_the_permalink( 42 ); ?>
- 投稿IDが42の投稿のパーマリンクを表示します。
追加情報を取得したい場合
the_permalink()
では現在の投稿のパーマリンクしか取得できませんが、get_permalink()
を使えば特定の投稿IDやカスタム投稿タイプのURLも取得できます。また、クエリパラメータを追加するなど、URLを加工することも可能です。
get_category()
で取得できるカテゴリー情報
$categories = get_the_category();
if ( ! empty( $categories ) ) {
foreach ( $categories as $category ) {
echo '<p>' . esc_html( $category->name ) . ': ' . esc_url( get_category_link( $category->term_id ) ) . '</p>';
}
}
出力できる情報
- name: カテゴリー名
- slug: カテゴリーのスラッグ
- term_id: タームID
- category_link: カテゴリーへのリンク
想定されるトラブル
投稿が存在しない場合にエラーが発生する
投稿が存在しないループ内で the_permalink()
を使うと、空のリンクが出力されます。
解決方法
have_posts()
でループの存在を確認するか、投稿があるかを条件でチェックします。
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endwhile; endif; ?>
カスタム投稿タイプで正しいリンクが取得できない
カスタム投稿タイプがパーマリンク設定に反映されていない可能性があります。
解決方法
管理画面で「設定」→「パーマリンク設定」を保存して、再度リンクを生成します。
Q&A
まとめ
the_permalink()
は、投稿のパーマリンクを表示するための基本的なテンプレートタグです。
the_title()
と組み合わせてリンクを表示したり、get_permalink()
を使ってURLを取得して加工することも可能です。
投稿のURLを扱う上で頻繁に使用される重要な関数なので、関連タグとの組み合わせを理解しておくと便利です。
コメント