MENU

the_permalink()

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() はなぜ直接URLを返さないのですか?

the_permalink() は画面に直接出力するための関数であり、変数としてURLを取得する場合は get_permalink() を使用します。

リンクにパラメータを追加するにはどうしたら良いですか?

get_permalink() を使い、URLにクエリパラメータを追加します。

<?php echo get_permalink() . '?ref=123'; ?>

カスタム投稿タイプのリンクがうまく生成されないのはなぜですか?

カスタム投稿タイプのスラッグやパーマリンク設定が正しく反映されていない可能性があります。管理画面でパーマリンク設定を再保存してみてください。

まとめ

the_permalink() は、投稿のパーマリンクを表示するための基本的なテンプレートタグです。

the_title() と組み合わせてリンクを表示したり、get_permalink() を使ってURLを取得して加工することも可能です。

投稿のURLを扱う上で頻繁に使用される重要な関数なので、関連タグとの組み合わせを理解しておくと便利です。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次