這次想要在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/

沒有留言:
張貼留言
留個話吧:)