回答編集履歴

2

ソースコードの不具合修正

2016/12/24 04:46

投稿

退会済みユーザー
test CHANGED
@@ -98,7 +98,7 @@
98
98
 
99
99
  foreach($keywords as $keyword) { // $keyword = "田中","一郎"
100
100
 
101
- $user_query->query_where .= $user_query->get_search_sql( $keyword, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value','CONCAT(UM1.meta_value,UM2.meta_value)' ), true );
101
+ $user_query->query_where .= $user_query->get_search_sql( $keyword, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value','CONCAT(UM2.meta_value,UM1.meta_value)' ), true );
102
102
 
103
103
  $key1 = $key1 . $keyword; // $key1 = "田中一郎"
104
104
 
@@ -106,7 +106,7 @@
106
106
 
107
107
 
108
108
 
109
- $user_query->query_where .= $user_query->get_search_sql( $key1, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value','CONCAT(UM1.meta_value,UM2.meta_value)' ), true );
109
+ $user_query->query_where .= $user_query->get_search_sql( $key1, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value','CONCAT(UM2.meta_value,UM1.meta_value)' ), true );
110
110
 
111
111
 
112
112
 

1

後出しの条件に対応

2016/12/24 04:46

投稿

退会済みユーザー
test CHANGED
@@ -49,3 +49,89 @@
49
49
  add_action( 'pre_user_query', 'extended_user_search' );
50
50
 
51
51
  ```
52
+
53
+ ###追記
54
+
55
+ こんな感じかな。真面目にテストをしていないので、不具合があったらごめんなさい。
56
+
57
+ ```PHP
58
+
59
+ function extended_user_search( $user_query ) {
60
+
61
+ // Make sure this is only applied to user search
62
+
63
+ if ( $user_query->query_vars['search'] ){
64
+
65
+ $search = trim( $user_query->query_vars['search'], '*' );
66
+
67
+
68
+
69
+ ?><pre><?php
70
+
71
+ var_dump($search);
72
+
73
+ ?></pre><?php
74
+
75
+
76
+
77
+ if ( $_REQUEST['s'] == $search ){
78
+
79
+ global $wpdb;
80
+
81
+
82
+
83
+ $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM1 ON UM1.user_id = {$wpdb->users}.ID AND UM1.meta_key = 'first_name'";
84
+
85
+ $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM2 ON UM2.user_id = {$wpdb->users}.ID AND UM2.meta_key = 'last_name'";
86
+
87
+ $user_query->query_from .= " JOIN {$wpdb->usermeta} as UM3 ON UM3.user_id = {$wpdb->users}.ID AND UM3.meta_key = 'nickname'";
88
+
89
+
90
+
91
+ // "田中 一郎"
92
+
93
+ $user_query->query_where = 'WHERE 1=1';
94
+
95
+ $keywords = explode(' ', str_replace(' ', ' ', $search)); // "田中 一郎" -> "田中 一郎" -> "田中","一郎"
96
+
97
+
98
+
99
+ foreach($keywords as $keyword) { // $keyword = "田中","一郎"
100
+
101
+ $user_query->query_where .= $user_query->get_search_sql( $keyword, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value','CONCAT(UM1.meta_value,UM2.meta_value)' ), true );
102
+
103
+ $key1 = $key1 . $keyword; // $key1 = "田中一郎"
104
+
105
+ }
106
+
107
+
108
+
109
+ $user_query->query_where .= $user_query->get_search_sql( $key1, array( 'user_login', 'user_email', 'user_nicename', 'UM1.meta_value', 'UM2.meta_value', 'UM3.meta_value','CONCAT(UM1.meta_value,UM2.meta_value)' ), true );
110
+
111
+
112
+
113
+ // デバッグ用コード ここから(消してOK)
114
+
115
+ ?><pre><?php
116
+
117
+ var_dump($user_query);
118
+
119
+ ?></pre><?php
120
+
121
+ // デバッグ用コード ここまで(消してOK)
122
+
123
+
124
+
125
+ }
126
+
127
+ }
128
+
129
+ }
130
+
131
+ add_action( 'pre_user_query', 'extended_user_search' );
132
+
133
+ ```
134
+
135
+ ※検索できるケース:"田中","一郎","田中 一郎","田中 一郎","田中一郎"
136
+
137
+ ※検索できないケース:"一郎 田中"