wordrepss:管理画面のカスタム投稿一覧でカスタム分類(タクソノミー)の絞り込みをする。複数タクソノミー対応。
Tag: Custom Post Type UI
カスタム投稿タイプとカスタム分類(タクソノミー)を作った際に管理画面でタクソノミーから絞り込みたい時ってありますよね。
というよりあったほうが親切かと。
投稿とカテゴリーではデフォルトでできるんですがカスタム投稿だと自作しないといけません。
なのでそのやり方を書いていきます。
投稿タイプやタクソノミーを直接指定しなくてもいいように作ってみました。
複数のタクソノミーを1つの投稿タイプに設定してる場合でもOKです。
カスタム投稿一覧でタクソノミーで絞り込み機能を作る
投稿ではこんな感じでデフォルトでカテゴリーから絞り込みが可能です。
それをカスタム投稿とカスタム分類でやっていきます!
カスタム投稿タイプを作る
まずはカスタム投稿タイプを作成します。
ここでは仮に「製品」という投稿タイプを作成します。
functions.phpに書いても良いですがCustom Post Type UIというプラグインが簡単でわかりやすいのでおすすめです。
関数リファレンス/register post type – WordPress Codex 日本語版
めんどくさいのでいっつもこれ使ってます。
カスタム分類(タクソノミー)を作る
次にカスタム分類(タクソノミー)を作成します。
仮に「種類」というタクソノミーを作成します。
こんな感じで利用する投稿タイプにチェックを入れればその投稿タイプで使用できます。
カスタム分類「種類」にこんな感じでタームを作成しました。
カスタム投稿とカスタム分類(タクソノミー)を紐付ける
上でカスタム分類(タクソノミー)を作った際に利用する投稿タイプにチェックを入れていれば表面上はカスタム投稿タイプで使用できます。
ただ、これはタクソノミーからでしか投稿タイプを取得できないので投稿タイプからでも使用しているタクソノミーを取得できるようにします。
functions.phpに書く場合は投稿タイプ追加の記述(register_post_type)に以下を足してください。
'taxonomies' => array('classification'),
絞り込みを作成する
あとは絞り込みを作成して完了です。
functions.phpに追加。
add_action( 'restrict_manage_posts', 'add_custom_taxonomies_term_filter' ); function add_custom_taxonomies_term_filter() { global $post_type; $object = get_post_type_object( $post_type ); $taxonomies = $object->taxonomies; if( $taxonomies ) { foreach( $taxonomies as $taxonomy ) { $taxonomy = get_taxonomy( $taxonomy ); wp_dropdown_categories( array( 'show_option_all' => $taxonomy->label, 'selected' => $taxonomy->name, 'name' => $taxonomy->name, 'taxonomy' => $taxonomy->name, 'value_field' => 'slug', 'hide_empty' => false, 'hierarchical' => true ) ); } } }
軽く説明を。
4行目
カスタム投稿タイプの情報を取得します。
このやり方ではあえて投稿タイプを指定する必要がありません。
逆に絞り込みを表示させたくない投稿タイプがある場合は、都度投稿タイプで分岐させてください。
5行目
取得した情報から紐付いているカスタム分類(タクソノミー)を取得します。
上で説明しました「カスタム投稿とカスタム分類(タクソノミー)を紐付ける」をやっておかないとここにデータが入ってないんですよね。
7行目
カスタム分類(タクソノミー)のデータが入っていれば絞り込み用にリストを表示します。
タクソノミーのデータは配列で入っているのでforeachで取り出してやります。
9行目
タームリストは関数「wp_dropdown_categories」で表示します。
基本的にタクソノミーの情報を入れてやればいいんですが、1つだけ注意点があります。
value_fieldは必ずslugにしておいてください。
term_idやname等も指定できますがうまく絞り込みできなかったです。
これでカスタム分類(タクソノミー)での絞り込みができるようになりました。
複数タクソノミーにも対応
このやり方は複数タクソノミーにも対応してます。
なので2つ以上のタクソノミーから絞り込みも可能です。
仮に「価格」というカスタム分類(タクソノミー)を追加します。
カスタム投稿「製品」に紐付け。
register_post_typeではこうなります。
'taxonomies' => array('classification','price'),
カスタム分類「価格」はこういう風にしました。
絞り込みはこうなります。
種類がアンプかつ価格が100000円~という絞り込みが可能になります。
- Category: Works , WordPress , Plugins
- Tag: Custom Post Type UI