【WordPress】投稿IDを取得するさまざまな方法|テンプレート・ループ内・URLからの取得も解説

【WordPress】投稿IDを取得するさまざまな方法|テンプレート・ループ内・URLからの取得も解説 WordPress

WordPressで記事の情報を操作する際、投稿ID(Post ID)は非常に重要な役割を果たします。たとえばカスタムフィールドの取得や投稿の絞り込み、投稿単位の処理を行う場面で頻繁に使われます。

この記事では、WordPressで記事IDを取得するさまざまな方法について、使用シーン別に解説します。

現在の投稿のIDを取得する

テンプレートファイルやループ内で使用する場合は、get_the_ID() 関数が便利です。


if (have_posts()) {
  while (have_posts()) {
    the_post();
    $post_id = get_the_ID();
    echo '投稿ID:' . $post_id;
  }
}

または、投稿IDをHTMLの属性などに埋め込む用途でも使用できます。

投稿オブジェクトからIDを取得する

$post グローバル変数から直接取得する方法もあります。


global $post;
echo $post->ID;

こちらはループ外や特定の投稿情報を取得した直後など、投稿オブジェクトがある場合に使います。

投稿スラッグやタイトルからIDを取得する

投稿スラッグ(post_name)をキーにIDを取得する場合は、以下のようにします。


$post = get_page_by_path('sample-post', OBJECT, 'post');
if ($post) {
  echo $post->ID;
}

タイトルを使う場合は `get_page_by_title()` を使いますが、スラッグより曖昧になりやすいため注意が必要です。

特定のURLから投稿IDを取得する

URLから投稿IDを抽出する場合、投稿のパーマリンク構造によっては難しいこともありますが、url_to_postid() 関数を使うと簡単です。


$url = 'https://example.com/sample-post/';
$post_id = url_to_postid($url);
echo $post_id;

管理画面で記事IDを確認する方法

WordPress管理画面の投稿一覧ページで、記事タイトルにマウスを合わせると表示されるリンクに「post=○○」と含まれている部分が投稿IDです。

もしくはプラグイン「Reveal IDs」などを使うと、ID列を明示的に表示できます。

まとめ

WordPressでは、テンプレート内・オブジェクトから・スラッグやURLからなど、さまざまな方法で投稿IDを取得することができます。使用する状況に応じて適切な手法を選ぶことで、より柔軟なカスタマイズが可能になります。