wordpressでスラッグからIDを取得するには

Last modified date

wordpressでスラッグから記事IDを取得する方法

今回はwpのカスタマイズ案件で地味に使用することが多い、記事スラッグや固定ページのスラッグからIDを取得する方法を紹介するぞ。

get_page_by_path()を使う

wordpressにはスラッグから記事IDを取得する関数が用意されている。

それがget_page_by_path()なのだ。

$page = get_page_by_path( $page_path, $output, $post_type );

引数には$page_path、$output、$post_typeの3つが用意されている。

$page_pathには取得したいスラッグを入力する。子ページの場合はスラッグを入れてparent-page/sub-pageのようにするのだぞ。

get_page_by_path()の使い方

スラッグさえ指定すれば取得できるが、デフォルトでは固定ページになっているので、記事やカスタムポストを取得したい場合は$post_typeも指定してやることを忘れてはならぬ。

//デフォルトでは固定ページ
$page_info = get_page_by_path('取得したいページのスラッグ');
$page_id = $page_info->ID;

//投稿やカスタムポストの場合
$post_data = get_page_by_path('取得したい記事のスラッグ', 'postやカスタムポストのスラッグ');
$post_id = $post_data->ID;

get_page_by_path()の使用例

パスからページIDを指定する方法は、固定ページやカスタムポスト使って情報の管理する場合に役に立つぞ。

例えば


  • 特定のページのカスタムフィールドでバナーを一元管理

  • トップページに表示させるピックアップ記事を特定のページのカスタムフィールドで管理


こういう運用する場合、ページのIDを取得する必要があるので、get_page_by_path()を使ってIDを取得するといいのである。

直接IDを指定するのではなく、スラッグからIDを取得するメリット

WordpressにはスラッグからIDを指定しなくても直接IDから記事情報を取得できる。なら直接IDから情報を取得すればいいのでは?と思うやつもおるかもしれぬな。

もちろんそれでも良い。ただしそれは本番環境1つで運用している場合だ!普通はローカル環境、テスト環境、本番環境といくつものサイトで運用される。

それぞれのデータベースまで完全に同期しているなら直接IDを取得すれば問題ないが、そうでなければどうしても記事IDはずれてしまう。

今回のようにスラッグで取得するようにしておけば、記事IDが異なっても同じスラッグの記事情報を取得できるので、トラブルが少なく済むぞ!

wordpressでスラッグからIDを取得する方法のまとめ


  • wordpressでスラッグからIDを取得するにはget_page_by_path()を使う

  • get_page_by_path()はデフォルトは固定ページなので、記事の場合は$post_typeの指定は忘れずに

  • 複数の環境で運用している場合はID指定でなくスラッグ指定したほうが便利



以上だ!

魔王様

コメントを残す

メールアドレスが公開されることはありません。

Post comment