スポンサーリンク

【WordPress】スラッグ名を使って投稿を参照(検索)する

アイキャッチ WordPress

あらかじめ決まった投稿からその内容を取り出すような場合、get_post()などの関数を使って投稿の情報(投稿オブジェクト)を取得し、その内容を参照することができます。

get_post($id, $output, $filter);

このget_post()関数は引数に投稿IDを使用するので、WordPress管理画面などからその投稿のIDを事前に確認し、コードに記述することで投稿オブジェクトを取得することが可能です。

以下は投稿IDが123の投稿からタイトルを表示するコードの例です。

$post_id = 123;
$target_post = get_post($post_id);
echo $target_post->post_title;
スポンサーリンク

サーバー環境などによってIDが変わる場合に投稿を参照したい

前述のコードは、特定のWebサーバーですでに公開済みの投稿だけを参照するのであれば問題なく動きますが、これらのコードをテストサーバーなどでテストし、本番サーバーに公開するような場合、必ずしも投稿IDはテストと本番環境で同一ではない可能性があります。

投稿にかかわらず、あらゆるタクソノミーは保存、更新のタイミングでIDがカウントアップされていくため、このようなコードはあまり汎用性が無く、本番化の過程でミスを招く原因となります。

コンテンツを参照する場合、システムが自動的に割り振るIDではなく、ユーザーで値を指定できるスラッグなどをキーに投稿を参照することでより安全なコードを記述できます。

スラッグ名をつかって投稿やタクソノミーを参照(検索)する

スラッグ名を使って投稿やカテゴリなどのオブジェクトを取得するにはそれぞれの取得関数を使用します。

投稿(post)の場合

// 投稿のスラッグから投稿オブジェクトを取得
$page_id_detail = get_page_by_path('detail', OBJECT, 'post');

固定ページ(page)の場合

// 固定ページのスラッグから投稿オブジェクトを取得
$page_id_detail = get_page_by_path('detail', OBJECT, 'page');

get_page_by_pathの第3引数のデフォルト値は'page'のため、固定ページについては引数なしでも取得可能です。

// 固定ページのスラッグから投稿オブジェクトを取得(デフォルト引数)
$page_id_detail = get_page_by_path('detail');

カスタム投稿タイプ

カスタム投稿タイプの投稿オブジェクトを取得するには、get_page_by_path()の第3引数にカスタム投稿タイプの名前を指定します。

// カスタム投稿のスラッグから投稿オブジェクトを取得
$page_id_detail = get_page_by_path('detail', OBJECT, 'costom-type');

カテゴリ

// カテゴリのスラッグからオブジェクトを取得
$cat = get_category_by_slug('category-slug');

タグ

タグの場合get_tags関数やget_term_by関数などが使えます。

// タグのスラッグからオブジェクトを取得 その1
$tag = get_tags(array('slug' => 'tag-slug'));
// タグのスラッグからオブジェクトを取得 その2
$tag = get_term_by('slug', 'tag-slug', 'post_tag', OBJECT);

カスタムタクソノミー

カスタムタクソノミーの場合、get_term_by関数などが使えます。

// カスタムタクソノミーのスラッグからオブジェクトを取得
$taxonomy = get_term_by('slug', 'taxonomy-slug', 'costom-taxonomy-name', OBJECT);

WordPress&Cocoonのお悩みにお答えします

クラベルではWordPressのブログサイト構築、Cocoonテーマの導入やカスタマイズに関するご相談を承っております。

お困りの方はぜひ一度お問い合わせください。また、現在ココナラをつかったサービス出品も始めてみました。お悩みおひとつの解決からお手軽にお申込みできますので、こちらもぜひあわせてご覧ください。

ワードプレス&コクーンのお悩み何でもお答えします 現役エンジニアによるWordPress&Cocoon制作支援
WordPress Web開発
お読みいただきありがとうございました。
最後に「いいね!」をいただけると大変励みになります。
最新情報をお届けします。
クラベルをフォローする
スポンサーリンク
この記事を書いた人
クラベル

Webサイト構築、Wordpressのカスタマイズやphpプログラミングなどやってます。ブログは省エネ運営中。Cocoonカスタマイズやゲーム、ガジェットの話題など。

クラベルをフォローする
クラベル

コメント

タイトルとURLをコピーしました