佐賀でふらふり

佐賀をうろつくWebデザイナーのブログ

WordPress よく使う

WordPressでスラッグからカテゴリIDを取得する方法


2月ってこんなに寒かったっけ…。と自分の誕生月ながら毎年思ってる僕です。

今日の記事タイトル、なんかついこの間書いた内容と似てるなー。と思うかもしれませんが、この間は「カテゴリIDからスラッグを取得する方法」で、今回はその逆です。

これ意外と使いドコロありますよ。
特に開発環境とかで作っておいて、本番環境に持って行く時とか。そういう事例も紹介していきます。

目次

  1. スラッグからカテゴリIDを取得
  2. どんな時に使うか
  3. まとめ

スラッグからカテゴリIDを取得

 
$cat = get_category_by_slug('slug');
$cat_ID = $cat -> term_id; 

はい、これで$cat_IDにカテゴリIDが取得出来ました。
簡単でしょ。

どんな時に使うか

簡単にカテゴリIDが取得できるんですが、問題はこの使い道。
僕はよくget_posts()で、投稿情報を取得するときに使います。

get_posts()はパラメータを与えることで、必要な情報を取得してきます。

get_posts の最も適切な使い方は、パラメータに基づいて投稿データを作成することです。
テンプレートタグ/get posts – WordPress Codex 日本語版

そしてそのパラメータでカテゴリを指定することで、特定のカテゴリの一覧を取得することができるわけです。

ただ、そのカテゴリを指定するときは、カテゴリIDじゃないといけないんです。

注意: category パラメータではカテゴリー名ではなくカテゴリー ID を指定する必要があります。
パラメータ テンプレートタグ/get posts – WordPress Codex 日本語版

例えば、トップに新着情報一覧を表示する場合、「新着情報」カテゴリに投稿されたものを表示するわけです。
開発環境ではそのカテゴリID「3」だったと仮定すると、

$args = array(
	'category'=> '3',
);
$posts_array = get_posts($args);

と指定して投稿情報を取得します。

でももし本番環境で、新着情報のカテゴリIDが「2」だったら…
いちいち直していくのめんどくさいですよねぇ…。

そこで今回の方法を使えば、

//新着情報のスラッグをtopicsとして
$cat = get_category_by_slug('topics');
$cat_ID = $cat -> term_id;

$args = array(
	'category'=> $cat_ID,
);
$posts_array = get_posts($args);

ほうら、これでカテゴリIDがどれだけ変わろうとも、新着情報のスラッグを「topics」にしておくだけで、テンプレートを編集する必要がなくなりますね。

まとめ

開発環境などに作ったところから、なるべくテンプレートを編集することなく、本番環境にもっていけたら、修正ミスなどが減って、非常に便利ですよね。

特に今回の場合は、わざわざテンプレートを編集するか、WordPressの管理画面からカテゴリを編集するか。の違いになってくるので、やっぱりWordPress管理画面から操作するほうが楽ですよね。

ただ、こうやってより便利により楽ちんに、より汎用性を持たせて…とやっていくと、そっちに時間かかりすぎて、結局複雑になってしまったりすることも…。

何事も適度が一番ですね。
そいぎ~


返信する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA