カスタム投稿にタクソノミーの表示列と絞り込みを追加

追加したカスタム投稿の一覧に、タクソノミーターム名(カテゴリー名)と絞り込み検索を追加するコードです。

/**
 * カスタム投稿一覧に列追加
 *
 */
function add_custom_column( $defaults ) {
$defaults['タクソノミー名'] = 'カテゴリー';
return $defaults;
}
add_filter('manage_posts_columns', 'add_custom_column');


/**
 * カスタム投稿一覧にタクソノミーのタームを表示
 *
 */
function add_custom_column_id($column_name, $id) {
if( $column_name == 'タクソノミー名' ) {
echo get_the_term_list($id, 'タクソノミー名', '', ', ');
}
}
add_action('manage_posts_custom_column', 'add_custom_column_id', 10, 2);


/**
 * カスタム投稿一覧にタームで絞り込むプルダウンリストを表示(3階層まで)
 *
 */
function add_post_taxonomy_restrict_filter() {
    global $post_type;
    if ( 'experience' == $post_type ) {
        echo '<select name="experience-cat">';
            echo '<option value="">カテゴリー指定なし</option>';
            $terms = get_terms('タクソノミー名', 'hide_empty=0');
            foreach ($terms as $term) :
             if ($term->parent == 0):
              echo '<option value="' . $term->slug . '">' . $term->name . '</option>';
              $parentID = $term->term_id;
 
              $children = get_terms( 'タクソノミー名','hierarchical=1&parent='.$parentID );
              if(!empty($children)):
 
               foreach($children as $child):
                echo '<option value="' . $child->slug  . '"> ' . $child->name . '</option>';
                
                $grandchildren = get_terms('experience-cat','hierarchical=0&parent='.$child->term_id);
      
                  if(!empty($grandchildren)):         

                    foreach ( $grandchildren  as $grandson ):
                    echo '<option value="' . $grandson->slug  . '">  ' . $grandson->name . '</option>';

                    endforeach;

                  endif;
      
               endforeach;
 
              endif;
             endif;
           endforeach;
 
        echo '</select>';
    }
}
add_action( 'restrict_manage_posts', 'add_post_taxonomy_restrict_filter' );

admin

cl0606

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です