カスタム投稿タイプ一覧でカスタムタクソノミーのフィルターを実装するメモ。
フィルターのsubmitボタンはGETメソッドをリクエストする。リクエストはwp-includes/query.phpで処理される。restrict_manage_postsはフィルターのsubmitボタンの前に挿入される。フォーム要素を使って適切なパラメータを設定する。
» WordPressの投稿一覧でタグのフィルタリングを追加する | Simple Colors
/** * カスタム投稿タイプcustompostにはカスタムタクソノミーcustomtaxonomyを設定している * カスタム投稿タイプ一覧でカスタムタクソノミーでフィルターを行う */ add_action( 'init', 'create_customtpost' ); function create_custompost () { // カスタム投稿タイプ設定 $labels = array( 'name' => 'サンプル', 'singular_name' => 'サンプル', 'add_new' => 'サンプルを追加', 'add_new_item' => '新しいサンプルを追加', 'edit_item' => 'サンプルを編集', 'new_item' => '新しいサンプル', 'view_item' => 'サンプルを編集', 'search_items' => 'サンプルを探す', 'not_found' => 'サンプルはありません', 'not_found_in_trash' => 'ゴミ箱にサンプルはありません', 'parent_item_colon' => '' ); $args = array( 'labels' => $labels, 'public' => true, 'capability_type' => 'post', 'hierarchical' => false, 'has_archive' => true, 'supports' => array( 'title', 'editor' ) ); register_post_type('custompost', $args); // カスタムタクソノミー設定 register_taxonomy( 'custompost', 'customtaxonomy', array( 'hierarchical' => true, // カテゴリー形式 'update_count_callback' => '_update_post_term_count', 'label' => '分類', 'singular_label' => '分類', 'public' => true, ) ); } // 投稿一覧にカスタムタクソノミーによる分類を追加 function manage_example_columns ( $columns ) { $columns['tax'] = '分類'; return $columns; } function add_custompost_column ($column, $post_id) { if ( 'tax' == $column ) { $value = get_the_term_list($post_id, 'customtaxonomy'); $value = preg_replace("/<[^>]+>(.+)<\/a>/","$1",$value); echo esc_attr($value); } } add_filter('manage_edit-costompost_columns', 'manage_custompost_columns'); add_action('manage_posts_custom_column', 'add_custompost_column', 10, 2); // カスタムタクソノミーでフィルター add_action( 'restrict_manage_posts', 'add_post_taxonomy_restrict_filter' ); function add_post_taxonomy_restrict_filter() { global $post_type; if ( 'custompost' == $post_type ) { ?> <select name="custompost"> <option value="">--</option> <?php $terms = get_terms('customtaxonomy'); foreach ($terms as $term) { ?> <option value="<?php echo $term->slug; ?>"><?php echo $term->name; ?></option> <?php } ?> </select> <?php } } ?>
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。