新潟県妙高市|ホームページと広告の相談相手

妙高Web屋

お仕事のご依頼お見積りのご依頼

WordPress

【WordPress】スラッグ名からIDを取得する方法〜投稿/固定ページ/カテゴリー/タグ/カスタムタクソノミー〜

2019.3.14

【WordPress】スラッグ名からIDを取得する方法〜投稿/固定ページ/カテゴリー/タグ/カスタムタクソノミー〜
WordPress 0 0

こちらの記事は、このような方におすすめです。

・WordPressのテンプレートファイルを編集されている時に、スラッグの名称をカギにIDを取得したい方
・スラッグから取得したIDを「スラッグの番号」のように扱いたい方

妙高Web屋LINE@ 友だち追加

WordPressでホームページ制作をしていると、ときどき「スラッグに関連づいたIDを使いたい」となる場合があります。

「スラッグ名ではダメで、IDを番号のように使いたい」

のような場合を、私自身もわずかながら経験したことがあります。

そこで今回は、「投稿・固定ページ・カテゴリー・タグ・カスタムタクソノミーそれぞれの、スラッグからIDを取得する方法」をまとめましたので、ご紹介します。

この記事の目次

「投稿」のスラッグ名からIDを取得する

まずは「投稿」から。

1個1個の投稿のスラッグ名から、そのスラッグのIDを取得するには、こちらのコードを試してみてください。

※下記コードの[sulg_name]には、存在する任意のスラッグ名を設定してみてください。なお[OBJECT]と[post]は固定で、その文言のままにしておいてください。

$post_info = get_page_by_path('sulg_name', 'OBJECT', 'post');
$post_info = $post_info->ID;

関数[get_page_by_path()]で、この場合では投稿に関する情報を取得します。

第2引数の[OBJECT]は読んでそのまま「オブジェクト」なのですが、ここでは、目的の情報を取得するためにこの値を設定する必要がある、程度にお考えください。

第3引数の[post]は「投稿」という意味です、他の関数でも使われますね。

ページの先頭へ戻る

「固定ページ」のスラッグ名からIDを取得する

「固定ページ」は、こちらのコードではいかがでしょうか。

※下記コードの[sulg_name]には、存在する任意のスラッグ名を設定してみてください。

$page_info = get_page_by_path('sulg_name');
$page_info = $page_info->ID;

こちらでも[get_page_by_path()]の関数が登場します。

投稿で使用している[get_page_by_path()]とは引数が違いますが、省略した場合でも固定ページに関しては問題なく取得できるかと思いますので、試してみてください。

また、固定ページに階層を持たせていて、その子階層のページに関してIDを取得したい場合はこちらを試してみてください。

※下記コードの[parent_slug_name][child_slug_name]には、存在する任意のスラッグ名を設定してみてください。

$page_info = get_page_by_path('parent_slug_name/child_slug_name');
$page_info = $page_info->ID;

ページの先頭へ戻る

「カテゴリー」のスラッグ名からIDを取得する

投稿に関連づけられている「カテゴリー」の場合は、こちらを試してみてください。

※下記コードの[sulg_name]には、存在する任意のスラッグ名を設定してみてください。

$cate_info = get_category_by_slug('sulg_name');
$cate_info = $cate_info->cat_ID;

カテゴリーに関する情報を取得するのに、関数[get_category_by_slug()]を用いています。

引数にするのはスラッグ名。

上記の1行目のコードによってカテゴリーの様々な情報が変数[$cate_info]に格納されましたので、その中からIDにあたる[cat_ID]を取得して、変数[$cate_info]にセットしています。

ページの先頭へ戻る

「タグ」のスラッグ名からIDを取得する

投稿に関連づけられている「タグ」の場合は、こちらを試してみてください。

※下記コードの[slug]はその文言のままにしておいてください。[sulg_name]には、存在する任意のスラッグ名を設定してみてください。

$tag_info = get_tags(array('slug' => 'slug_name'));
$tag_id = $tag_info[0]->term_id;

処理としては、カテゴリーのものとあまりかけ離れてはいません。

タグの情報を取得する関数が[get_tags()]であって、引数にするスラッグを配列の形式にしているところは少し複雑ですが、構造が分かればすんなり理解できるかと思います。

ページの先頭へ戻る

「カスタムタクソノミー」のスラッグ名からIDを取得する

続いては「カスタムタクソノミー」についてです。

カスタム投稿タイプに紐づけて「カテゴリ」や「タグ」っぽく使えるアレですね。

※下記コードの[slug]は固定です。[sulg_name]には、存在する任意のスラッグ名を設定し、[custom_taxonomy]には、そのスラッグ名が存在するカスタムタクソノミー名を設定してみてください。

$term_info = get_term_by('slug', 'slug_name', 'custom_taxonomy')
$term_id = $term_info->term_id;

カスタムタクソノミーの情報を取得するのは、関数[get_term_by()]です。

第1引数の[slug]は「情報を取得するカギにするのはスラッグです」という意味と言えば良いでしょうか。

第3引数の[custom_taxonomy]はタクソノミー名です。日本語の名称ではなく、カスタム投稿タイプのURLの一部にも使われる名称のほうを設定します。

ページの先頭へ戻る

参考サイト

今回の記事を作成するにあたり、こちらの記事を参考にさせていただきました。

ありがとうございました。

ページの先頭へ戻る

こちらの記事に感想をお寄せください

こちらの記事をご覧いただき、感じたことなどありましたら下記のボタンを押していただき「感想投稿フォーム」よりお気軽にご感想をお寄せください。

この記事の感想を投稿する
妙高Web屋LINE@ 友だち追加
0 0

LINE@始めました!

妙高Web屋ではこのたび、LINE@(ラインアット)を始めることとなりました。

企業やお店のWeb担当者さまへ向けて、ホームページの運営・管理・更新に関する情報を発信していきます。

情報を購読できる「友だち」へのご登録は、下記のボタンよりお願いいたします。

目的のページは見つかりましたか?

お探しのページが見当たらない場合は、キーワードを手がかりに、サイト内検索をご利用ください。

または、下記のボタンより「サイトマップ」のページにアクセスしていただき、お探しください。

目的のページは見つかりましたか?
Twitterでシェアする Twitterでシェアする Facebookでシェアする Facebookでシェアする Feedlyで購読する Feedlyで購読する お問い合わせお問い合わせ ページの先頭へページの先頭へ