【WP Job Manager】WP Job Managerで作成した求人一覧を職種毎に自分で取得する
求人機能を実装するためのプラグインの1つに、「WP Job Manager」というものがあります。
デフォルトで使うと以下のような形で表示され、普段使いにはそのままでも十分な感じです。

ですが、今回は自分で取得する方法を考えてみます。
これ考えとくと、メタ情報とかカスタムフィールドの情報とか追加するときに便利では?
とふと思ったので。
以下がイメージです。

流れとしては、
1.職種一覧を取得。
2.各職種を基に、WP_Queryで投稿情報を取得・表示
という流れです。
ちなみに職種一覧は、「求人情報」の「職種」で作成したやつです。

各職種を取得
get_termsという関数を使って各職種情報を取得します。
引数はまんまで大丈夫です。
$taxonomy_slug = 'job_listing_category';
$post_type_slug = 'job_listing';
$args = array(
'hide_empty' => false // カウント0のタームも取得する
);
$terms_obj = get_terms( $taxonomy_slug , $args ); // タームを取得
最後の行の$terms_objを使って、求人記事を取得します。
職種毎に記事を取得・表示する
WP_Queryで記事を取得・表示します。
if( !is_wp_error( $terms_obj ) && count( $terms_obj ) ){
foreach( $terms_obj as $term ){
echo '<h3>'.$term->name.'</h3>';
//投稿取得
$my_query = new WP_Query( array(
'post_type' => $post_type_slug,
'posts_per_page' => 5, // 表示させたい記事数
'tax_query' => array(
array(
'taxonomy' => $taxonomy_slug,
'terms' => $term->slug,
'field' => 'slug',
)
)
));
if( $my_query->have_posts() ){
while( $my_query->have_posts() ){
$my_query->the_post();
echo '<h4>'.get_the_title().'</h4>';
}
}
wp_reset_postdata();
}
}
'posts_per_page’やechoで出力する内容は適宜調整頂ければと思います。
ループのコードはこちらの記事をかなり参考にしました。
最終コード
先程の2つのコードをガッチャンコするだけです。
$taxonomy_slug = 'job_listing_category';
$post_type_slug = 'job_listing';
$args = array(
'hide_empty' => false // カウント0のタームも取得する
);
$terms_obj = get_terms( $taxonomy_slug , $args ); // タームを取得
if( !is_wp_error( $terms_obj ) && count( $terms_obj ) ){
foreach( $terms_obj as $term ){
echo '<h3>'.$term->name.'</h3>';
//投稿取得
$my_query = new WP_Query( array(
'post_type' => $post_type_slug,
'posts_per_page' => 5, // 表示させたい記事数
'tax_query' => array(
array(
'taxonomy' => $taxonomy_slug,
'terms' => $term->slug,
'field' => 'slug',
)
)
));
if( $my_query->have_posts() ){
while( $my_query->have_posts() ){
$my_query->the_post();
echo '<h4>'.get_the_title().'</h4>';
}
}
wp_reset_postdata();
}
}
基本的には上のコードをコピペすれば使えるはずです。
ディスカッション
コメント一覧
まだ、コメントがありません