テスト環境と本番環境で投稿カテゴリのIDが異なる場合 – WordPress

例えばvagrantでローカルにWordPressのテスト環境を作成する場合に、本番環境と投稿カテゴリのIDが合わなくて苦労することがあります。(私だけ?)

そんなときは、カテゴリのスラッグを利用してカテゴリのID(term_id)を参照すれば、カテゴリのIDを気にしなくて済みます。

$categories = array('cat1', 'cat2', 'cat3');
$ids = array();
foreach ($categories as $value) {
    $ids[] = get_category_by_slug($value)->term_id;
}
$args = array(
    'category__in'=> $ids,
    'posts_per_page' => 5,
    'order'    => 'DESC'
);
query_posts( $args );

と書いたのですが、category_nameを使えば済む話でした。

//$categories = array('cat1', 'cat2', 'cat3');
//$ids = array();
//foreach ($categories as $value) {
//    $ids[] = get_category_by_slug($value)->term_id;
//}
$args = array(
    'category_name'=> 'cat1, cat2, cat3',
    'posts_per_page' => 5,
    'order'    => 'DESC'
);
query_posts( $args );