デフォルトの管理者の「ユーザー」列を編集して、作成したカスタム投稿タイプから「トランザクション数」と「最新のトランザクション」の 2 つのカスタム列を作成しました。これらの列にデータを入力するデータをカスタム メタ ボックス フィールドとして使用したくありませんでした。これは、ユーザーに不要なオプションを作成するように思われるためであり、ユーザーがこれらのフィールドを編集できるようにしたくありませんでした。
列を追加した後、次のようなカスタム クエリを入力しました。
function test_modify_user_table_row( $val, $column_name, $user_id ) {
global $wpdb;
$user = get_userdata( $user_id );
$userID = $user->id;
$query_for_number_of_transactions = $wpdb->get_results(
"
SELECT COUNT(post_author) AS number_of_transactions FROM wp_posts WHERE post_type='club_orders' AND post_author=$userID;
"
);
$query_for_latest_transaction = $wpdb->get_results(
"
SELECT DATE_FORMAT((MAX(post_date)), '%M %e %Y') AS latest_transaction FROM wp_posts WHERE post_type='club_orders' AND post_author=$userID;
"
);
// Display the query data into custom columns
$er_qm_number_query_result = $query_for_number_of_transactions[0];
$er_qm_transaction_query_result = $query_for_latest_transaction [0];
switch($column_name){
case 'latest_transaction':
return $er_qm_transaction_query_result->latest_transaction;
break;
case 'number_of_transactions':
return $er_qm_number_query_result->number_of_transactions;
break;
default:
}
return "Error";
}
add_filter( 'manage_users_custom_column', 'test_modify_user_table_row', 10, 3 );
上記のコードは機能し、これらの列に表示したいデータを表示します。ただし、私が直面している問題は、どちらかの列をソート可能にしようとしたときです。カスタムメタボックスフィールドで入力されたカスタム列をソート可能にすることに関するGoogle検索から多くの資料を見つけていますが、カスタムクエリで入力された列をソート可能にする方法については何も見つかりません.
これは可能ですか、それともカスタム メタ ボックスを作成して、このデータを並べ替えるために読み取り専用にする必要がありますか?