WordPressの投稿・固定ページ・カスタム投稿タイプの「タイトル名からIDを取得する」方法

WordPressでタイトル名からIDを取得したいな~と思うことがあって、方法を調べると「get_page_by_title」という関数を使えばいいことがわかりました。

この関数を使うと、投稿/固定ページ/カスタム投稿タイプなどのタイトル名からIDなどの投稿に関する情報を取得することができます。

以下に使い方などを書きましたので、機会がありましたらご参考ください。

タイトル名からIDなど投稿に関する情報を取得する方法

まずはCodexの「get_page_by_title」を確認して使い方を見ます。

使い方

<?php get_page_by_title( $page_title, $output, $post_type ); ?>

使えるパラメーター

それぞれ使えるパラメーターは以下です。

パラメーター 説明
$page_title(必須) タイトル名
$output(オプション) ・出力形式(デフォルト:OBJECT)
OBJECT:オブジェクト
ARRAY_N:インデックス配列
ARRAY_A:連想配列
$post_type(オプション) ・投稿タイプ(デフォルト:page)
page,postなどの投稿タイプ。カスタム投稿タイプもできる

使い方サンプル

ここまでで基本的な情報がわかったので、さっそくいくつかサンプルを見てみましょう~。

投稿のタイトル名「WordPressのはじめかた」の情報をオブジェクトで取得する

<?php
$page_data = get_page_by_title( 'WordPressのはじめかた', OBJECT, 'post' );
echo $page_data->ID; //ID出力
?>

固定ページのタイトル名「当サイトについて」の情報を連想配列で取得する

<?php
$page_data = get_page_by_title( '当サイトについて', ARRAY_A, 'page' );
echo $page_data['ID']; //ID出力 連想配列の場合は出力の方法がちょっと変わる
?>

カスタム投稿タイプ「spot」のタイトル名「高田城百万人観桜会」の情報をオブジェクトで取得する

<?php
get_page_by_title( '高田城百万人観桜会', OBJECT, 'spot' );
echo $page_data->ID; //ID出力
?>

という感じです。固定ページのタイトル名から取得する場合は、第3引数の「page」を省略することもできます。僕は引数を省略すると、自分で書いたコードなのに後で見直したら意味がわからなくなることがあるので、わざとすべての引数を設定することもあります。

あと、先にも書きましたが実際に取得して「var_dump」などを使うとわかるんですが、取得できるのはIDだけではなくて、投稿に関する情報を取得できます。ID取得以外にも使えそうな関数ですね。気になる方は、ご自身でお試しください。

ところで、どういう時に使ったの?

「タイトル名からIDを取得する場面なんてあるのか」と思う方もいるかもしれませんが、WordPressの特定のカスタム投稿タイプに存在している記事タイトルと、WordPressではない他のデータベースのテーブルにあるタイトル名が入ったカラムの値を参照して、両方データがある場合、タイトル名からIDを取得して、新しくテーブルを作ってIDとタイトル名を格納する、みたいなことをしました。

紐づけるデータをタイトル名にした場合に使ったってことですね。WordPress側で記事タイトルとIDが紐づいてるんだし、わざわざタイトル名からIDに変換しなくてもいいんじゃないかと思ったこともあったんですが・・・

僕が置かれている状況では複雑化してしまったので、「get_page_by_title」を使いました。他にももっといい方法があるかもしれませんが、あくまで使い方一例って感じです。

というわけで、何かのご参考となりましたら幸いです。

著者:bouya Imamura