【WordPress】投稿のスラッグを取得する方法

【WordPress】投稿のスラッグを取得する方法 WordPress

WordPressでは、投稿のURLの一部として使用される「スラッグ」は、カスタムURLや条件分岐、クエリ処理などで活用されることが多い重要な情報です。本記事では、投稿のスラッグを取得する具体的な方法を紹介します。

スラッグとは?

スラッグ(slug)とは、投稿や固定ページ、カスタム投稿タイプに割り当てられるURLの末尾部分のことで、通常は英数字で構成されます。たとえば、https://example.com/sample-post というURLの sample-post がスラッグにあたります。

現在表示中の投稿のスラッグを取得する方法

テンプレートファイル内で、現在表示されている投稿のスラッグを取得するには、以下のようなコードを使用します。

<?php
$slug = get_post_field( 'post_name', get_post() );
echo esc_html( $slug );
?>

get_post() で現在の投稿オブジェクトを取得し、get_post_field() 関数で post_name(=スラッグ)を取り出しています。

ループ内で投稿のスラッグを取得する場合

WordPressループの中で投稿ごとにスラッグを取得したい場合は、以下のように記述します。

<?php
if ( have_posts() ) :
  while ( have_posts() ) : the_post();
    $slug = get_post_field( 'post_name', get_the_ID() );
    echo '<p>スラッグ: ' . esc_html( $slug ) . '</p>';
  endwhile;
endif;
?>

特定の投稿IDからスラッグを取得する

特定の投稿IDが既に分かっている場合、その投稿のスラッグは次のように取得できます。

<?php
$post_id = 123; // 任意の投稿ID
$slug = get_post_field( 'post_name', $post_id );
echo esc_html( $slug );
?>

まとめ

スラッグは、カスタムリンクや条件分岐の判定に使える便利な情報です。get_post_field( 'post_name', ... ) を活用すれば、現在表示中の投稿・ループ中の投稿・特定IDの投稿いずれにおいても柔軟にスラッグを取得できます。WordPressでカスタムな処理を行う際にはぜひ活用してみてください。