2月ってこんなに寒かったっけ…。と自分の誕生月ながら毎年思ってる僕です。
今日の記事タイトル、なんかついこの間書いた内容と似てるなー。と思うかもしれませんが、この間は「カテゴリIDからスラッグを取得する方法」で、今回はその逆です。
これ意外と使いドコロありますよ。
特に開発環境とかで作っておいて、本番環境に持って行く時とか。そういう事例も紹介していきます。
目次
スラッグからカテゴリ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管理画面から操作するほうが楽ですよね。
ただ、こうやってより便利により楽ちんに、より汎用性を持たせて…とやっていくと、そっちに時間かかりすぎて、結局複雑になってしまったりすることも…。
何事も適度が一番ですね。
そいぎ~