カスタム投稿タイプのタクソノミー・メニューを好みの順番でウィジェットに表示する

備忘録です。

まず、カスタム投稿タイプの作成は、function.phpにコードを書くことも作成できるが、GD Custom Posts And Taxonomies Toolsプラグインを使って作成することもできる。

GD Custom Posts And Taxonomies Toolsをインストールすると、TaxonomyのTermListを表示するウィジェットも追加される。

TaxonomyのTermListのウィジェットを追加するプラグインは他にもあるが、カスタム投稿タイプの作成に上記プラグインを使う方法を選択したので、そのプラグインで追加されるウィジェットを使うことにした。

Term Listの表示順をコントロールする

GD Custom Posts And Taxonomies Toolsプラグインで追加されるWidgetの表示部分のコードを見てみると、結局、get_terms関数で得た結果をwalk_category_tree関数で、表示するHTMLを作成している(みたい)

Term Menu Orderプラグインをインストール

このプラグインをインストールすると、Termに順序をコントロールする数字を入力できるようになります。(ページの順序のように)

そして、get_terms関数の第2引数の配列に’orderby”=>’menu_order’を含めれば、自分で設定した順序で表示されるようになります。

GD Custom Posts And Taxonomies Toolsのウィジェットをカスタマイズ

plugin dir/widgets/gdtt-terms-list/の中にあるファイルが、terms-listウィジェットのフォーム部分の表示。filter.phpに「Sort by」のselectフォームがあるので、optionタグにmenu_orderを追加する。

以下が書き換えたコード

<select id="<?php echo $this->get_field_id('orderby'); ?>" name="<?php echo $this->get_field_name('orderby'); ?>">
<option value="name"<?php echo $instance['orderby'] == 'name' ? ' selected="selected"' : ''; ?>><?php _e("Term name", "gd-taxonomies-tools"); ?></option>
<option value="count"<?php echo $instance['orderby'] == 'count' ? ' selected="selected"' : ''; ?>><?php _e("Posts count", "gd-taxonomies-tools"); ?></option>
<option value="menu_order" <?php echo $instance['orderby'] == 'menu_order' ? ' selected="selected"' : ''; ?>><?php _e("Menu Order", "gd-taxonomies-tools"); ?></option>
</select>


最後のoptionが追加したもの。

これで、WidegetのセレクトフォームのSort byでMenu Orderを選択すれば、自分で設定した表示順でTermリストが表示される。

ちなみに、ID順での表示も選択できるようにするには、オプションに


<option value="" <?php echo $instance['orderby'] == '' ? ' selected="selected"' : ''; ?>><?php _e("Term ID", "gd-taxonomies-tools"); ?></option>


を追加すればよい。(get_terms関数にorderbyのデフォルトはID順なので)