這次想要在wordpress的帳號管理的查詢功能新增自已的user meta key查詢。
使用到的Hook分別為如下:
- restrict_manage_users ACTION:
這個Action可以替users表格上面的filter區塊自訂我們要的html 語法,這次要做的效果一樣弄一個下拉式選單就OK了。送出後你會發現網址QueryString會加了我們指定的值
// Adds a dropdown to filter users based on a meta field function add_recommand_filter_into_user_table() { global $pagenow; if (is_admin() && $pagenow == 'users.php') { $optNone = ''; $optYes = ''; $optNo = ''; if(isset($_GET['recommand'])){ if(strcmp($_GET['recommand'],'1') == 0){ $optYes = 'selected="selected"'; }else{ $optNo = 'selected="selected"'; } }else{ $optNone = 'selected="selected"'; } echo ''; } } add_action('restrict_manage_users', 'add_recommand_filter_into_user_table');
- pre_get_users FILTER:
這個Filter簡言之就是要處理我們新增的action所送出的值為何,然後可以重改變動query物件的meta參數
// Updates user query based on filtering criteria function query_recommand_query_from_user_table($query) { global $pagenow; if (is_admin() && $pagenow == 'users.php' && isset($_GET['recommand'])) { $recommandValue = wp_strip_all_tags($_GET['recommand']); if(strcmp($recommandValue,'') != 0){ $meta_query = array( array( 'key' => RECOMMAND_KEY, 'value' => $recommandValue ) ); $query->set('meta_key', RECOMMAND_KEY); $query->set('meta_query', $meta_query); } } } add_filter('pre_get_users','query_recommand_query_from_user_table');
參考
- http://wordpress.stackexchange.com/questions/189077/how-to-get-users-by-a-custom-field-by-user-meta-data
- http://www.davemccourt.com/wp-user-filtering/
沒有留言:
張貼留言
留個話吧:)