Saya menggunakan plugin Register Plus Redux untuk menambah formulir pendaftaran dengan bidang metadata khusus. Bidang-bidang ini ditampilkan di bagian bawah setiap halaman detail catatan pengguna dan dapat diambil dengan get_the_author_meta.
Selain itu, saya dapat membuat kolom di panel Pengguna (tampilan daftar) dan membuat kolom ini dapat diurutkan. Masalahnya adalah, ketika saya mengklik judul kolom khusus, nilai orderby = di URL tampaknya diabaikan. Dengan kata lain, tampaknya permintaan yang menghasilkan tampilan daftar pengguna tidak termasuk data meta khusus (misalnya mungkin memerlukan pernyataan bergabung jika metadata tidak di tempat biasa untuk data pengguna?). Rasanya seperti saya telah melewatkan satu langkah.
Ini kode saya untuk membuat kolom khusus:
//add columns to User panel list page
function add_user_columns( $defaults ) {
$defaults['company'] = __('Company', 'user-column');
$defaults['title'] = __('Title', 'user-column');
return $defaults;
}
function add_custom_user_columns($value, $column_name, $id) {
if( $column_name == 'company' ) {
return get_the_author_meta( 'company_name', $id );
}
if( $column_name == 'title' ) {
return get_the_author_meta( 'titlefunction', $id );
}
}
add_action('manage_users_custom_column', 'add_custom_user_columns', 15, 3);
add_filter('manage_users_columns', 'add_user_columns', 15, 1);`
Dan ini kode saya untuk membuat kolom-kolom ini dapat disortir:
function user_sortable_columns( $columns ) {
$columns['company'] = 'Company';
return $columns;
}
add_filter( 'manage_users_sortable_columns', 'user_sortable_columns' );
function user_column_orderby( $vars ) {
if ( isset( $vars['orderby'] ) && 'company' == $vars['orderby'] ) {
$vars = array_merge( $vars, array(
'meta_key' => 'company',
'orderby' => 'meta_value',
'order' => 'asc'
) );
}
return $vars;
}
add_filter( 'request', 'user_column_orderby' );`
Adakah gagasan bagaimana saya dapat memperbarui kueri yang menghasilkan daftar pengguna sehingga mencakup pengurutan berdasarkan bidang khusus saya? Atau, jika bukan itu masalahnya, bagaimana cara membuat judul kolom khusus mengurutkan daftar pengguna saat diklik?
Terima kasih.
sumber
Jawaban:
Jawaban pertama saya benar-benar keluar dari tanda dan saya benar-benar menulis ulang ...
Tetapi berkat petunjuk Milo, saya menemukan solusinya di sini:
http://wordpress.mcdspot.com/2011/05/24/search-admin-user-list-on-first-and-last-names/
Setelah mengadaptasinya, ini berfungsi untuk saya dengan 'facebook' dan 'twitter'
author_meta
.sumber
Saya tidak yakin itu mungkin, mungkin dengan memodifikasi kueri via
pre_user_query
. inilah fungsi cepat dan kotor untuk melihat isinya:sumber
Cara paling sederhana untuk melakukannya menurut saya:
sumber
Jika nilai meta Anda tidak terisi penuh (memiliki nol), jawaban luar biasa @ brasofilo akan menghasilkan daftar pengguna yang menghilangkan pengguna dengan nilai meta_values yang hilang.
Cara mengatasinya mudah. Lakukan saja KIRI BERGABUNG :
$user_search->query_from .= " LEFT JOIN {$wpdb->usermeta} m1 ON {$wpdb->users}.ID=m1.user_id AND (m1.meta_key='facebook')";
sumber
Saya dapat mencapai pemilahan pengguna kolom khusus menggunakan kode dan kait yang telah Anda posting, kecuali saya tidak menggunakan filter 'permintaan', dan saya juga tidak memerlukan fungsi 'orderby' tambahan. Wordpress dengan benar mengurutkan data dalam kolom khusus dalam kasus saya dengan nilai numerik yang saya kembalikan di callback tindakan 'manage_users_custom_column'.
sumber