[ワードプレス]管理者記事の一覧で、custom taxonomyにフィルタリングできるようにする
ワードプレスでショッピングモール似ているのを作っている. 製造社で製氷機を区分するように custom taxonomyを設定した. ところで管理者ページの文リストで製造社を土台で検索ができないということを見つけた.
まず初めて使った方法はワードプレス 3.5から入って行った機能を使うのだ. 文リストに custom taxonomyを見せてくれること. それでは文リストにある製造社をクリックした時該当の製造社でピルトリングになる. 下の絵のようにね. 下の絵の SIMAG みたいなことをクリックすれば該当の製造社のだけリストに出るようになる.

販売分類と製造社が Custom Taxonomyで, Ice-hello, SIMAG みたいなことが Termだ.
これはこの文を見て分かったのだ :WordPress 3.5 admin columns for custom taxonomies
ピルトリングができなければならない
しかしリストに表示されない製造社でピルトリングができないじゃないか? とにかく間に下のように作らなければならなかった.
分かるが, 作ってこの文を書くのだ. 上のように表示するためのコードは下のようだ. 販売分類も custom taxonomyだが, 製造使用コードだけ書く. 製造謝意 custom taxonomy slugは companyだった.
add_action('restrict_manage_posts','restrict_ice_machine_by_company') /** * 製造社分類セレクトボックス出力 */ function restrict_ice_machine_by_company() { global $typenow; global $wp_query; if ($typenow=='ice_machine') { $taxonomy = 'company'; $taxonomy_info = get_taxonomy($taxonomy) $terms = get_terms($taxonomy) ?> <select name="<?=$taxonomy?>"> <option value="0"> <?=$taxonomy_info->labels->all_items?> </option> <? foreach ($terms as $term) { $selected = $term->slug == $_GET[$taxonomy]?' selected ':''; ?> <option <?=$selected?> value="<?=$term->slug?>"><?=$term->name?>(<?=$term->count?>)</option> <?}?> </select> <?} }
原理が意外に単純だが, restrict_manage_postsというアクションにそのままセレクトボックスを出力する hookをかけるのだ. (hookが何やら知りたければ ‘ワードプレス プラグイン 作り 基本 概念‘を一度読んで見なさい.) もちろん考慮するのはすべて考慮してしたことだ. このピルトリングボックスのために別に提供される関数みたいなことはないようだ.
一応 ‘company’ taxonomyの termを皆呼んで来てそれで select タグ作って振り撤いたことだ. select ボックスの option valueは termの slugにならなければならない.
taxonomy 情報を呼んで来たのは, taxonomyの label 情報を呼んで来て select ボックスの初項目に ‘全体製造社’ 同じ式で浮かべてくれるためだ.
これをすることに基本的に ‘Adding a Taxonomy Filter to Admin List for a Custom Post Type?‘の助けをたくさん受けた.ところで時間がなくてすべて読んでしなかったし, コードだけ見て自分なりに作ったことだ. 知りたい人はあの文を精読して作っても良い.
以上だ.
- コメント機能はありません。コメントの代わりに[email protected]
にメールを送ってください。