WordPressの管理画面一覧にカスタムフィールドを追加して並び替えもしたいです

カスタム投稿タイプの管理画面の一覧にカスタムフィールドを表示させたが、並び替えもしたい

ここに実現したいことを箇条書きで書いてください。

前提

WordPressでカスタム投稿タイプcustomというものをつくり、そこにターム3つが存在します(custom_cat1 custom_cat2 custom_cat3)
管理画面一覧では上記タームが表示されている中、カスタムフィールドの値も表示させました。(field1)
これの順番を変更したいと考えています。

該当のソースコード

https://into-the-program.com/wordpress-posts-sort-custom-field-value/
ここを参考にしました。

//投稿一覧に表示するカスタムフィールドのカラム名を指定 function add_posts_columns($columns) { $columns['field1'] = 'カスタムフィールド1'; return $columns; } add_filter('manage_custom_posts_columns', 'add_posts_columns'); //投稿一覧にカスタムフィールドのカラムを追加する function add_posts_custom_column($column_name, $post_id) { if ($column_name === 'field1') { $column_count = get_post_meta($post_id, 'field1', true); if (!empty($column_count)) { echo esc_html($column_count); } else { echo __('None'); } } } add_filter('manage_custom_posts_custom_column', 'add_posts_custom_column', 10, 2); //カスタムフィールドによるソートを可能にする function posts_sortable_columns($sortable_column) { $sortable_column['field1'] = 'field1'; return $sortable_column; } add_filter('manage_edit-custom_sortable_columns', 'posts_sortable_columns'); //カスタムフィールドでソートする際のパラメータ function posts_columns_sort_param($vars) { if (isset($vars['orderby']) && 'field1' === $vars['orderby']) { $vars = array_merge( $vars, array( 'meta_key' => 'field1', 'orderby' => 'meta_value', ) ); } return $vars; } add_filter('request', 'posts_columns_sort_param'); //投稿一覧のカラムの並び順を変更 function posts_columns_sort($columns) { $sort_number = array( 'cb' => 0, 'title' => 1, 'custom_cat1' => 2, 'field1' => 3, 'custom_cat2' => 4, 'custom_cat3' => 5, 'date' => 6 ); $sort = array(); foreach ($columns as $key => $value) { $sort[] = $sort_number[$key]; } array_multisort($sort, $columns); return $columns; } add_filter('manage_edit-seko_columns', 'posts_columns_sort');

試したこと

上記の方法で試しましたが、並び順がカスタム投稿タイプの部分が効きません。
記載方法が間違えていると思いますが、どのように記載すればよいでしょうか。
ご教示頂きますと助かります。

コメントを投稿

0 コメント