Wordpress get_users meta_query

'post_type'     =>'post',tìm kiếm theo trường tùy chỉnh cũng như truy vấn các dữ liệu có liên quan đến trường tùy chỉnh. Biết được món này thì bạn không phải lo xử lý các vấn đề khi làm các trang web bất động sản hoặc trang web du lịch

Điều đầu tiên là trường đối tượng bài đăng ACF không lưu trữ tên của bài đăng liên quan. Nó lưu ID bài đăng của bài đăng đó. Vì vậy, nếu bạn đang tìm kiếm trường đối tượng bài đăng, bạn cần sử dụng ID bài đăng chứ không phải tên

Thứ hai, bởi vì bạn đã đặt trường đối tượng bài đăng để cho phép nhiều lựa chọn, ACF lưu trữ các lựa chọn đó dưới dạng một mảng được tuần tự hóa trong một hàng của cơ sở dữ liệu. Mảng này không thể được tìm kiếm giống như trường tùy chỉnh WP tiêu chuẩn

https. //www. trường tùy chỉnh nâng cao. com/resources/querying-relationship-fields/


$meta_query = array('relation' => 'OR');
foreach ($companies as $post_id) {
  $meta_query(
    'key' => 'company',
    'value' => '"'.$post_id.'"'.
    'compare' => 'LIKE'
  }
}
$args['meta_query'] = $meta_query;

WordPress có chức năng meta người dùng mạnh mẽ cho phép các nhà phát triển và plugin lưu trữ siêu dữ liệu bổ sung về người dùng đã đăng ký trong cơ sở dữ liệu. Thông tin meta này có thể là tất cả các loại dữ liệu và thuộc tính khác nhau có thể được sử dụng cho các mục đích khác nhau. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sử dụng truy vấn meta người dùng WordPress để truy xuất và phân đoạn người dùng WordPress của bạn dựa trên khóa meta cụ thể với giá trị dữ liệu nhất định

Đối với điều này, chúng tôi sẽ sử dụng một lớp PHP để tìm kiếm cơ sở dữ liệu trực tiếp truy vấn meta người dùng WordPress, WP_User_Query . Mặc dù ban đầu nó có vẻ phức tạp, nhưng một khi bạn biết cách thức hoạt động của nó thì nó có thể là một công cụ rất mạnh mẽ. Và đó là mục tiêu của chúng tôi hôm nay, để nắm vững các yếu tố cơ bản của truy vấn meta người dùng WordPress để tìm kiếm dữ liệu meta người dùng tùy chỉnh.

Và mặc dù con đường mã hóa rất tuyệt và điều quan trọng là phải biết cách mọi thứ hoạt động ở chế độ nền, chúng tôi cũng sẽ khám phá một số tùy chọn khác. Có thể sử dụng các plugin để đơn giản hóa rất nhiều tác vụ tìm kiếm của người dùng, nó hoạt động giống như truy vấn meta WordPress, nhưng đó là một cách tiếp cận dễ dàng hơn nhiều

Wordpress get_users meta_query

Sử dụng các trường tùy chỉnh trong Truy vấn người dùng WordPress

Để làm theo, chúng tôi khuyên bạn nên tạo một chủ đề con. Truy vấn người dùng từ cơ sở dữ liệu WordPress hoạt động giống như truy vấn bài đăng. Bây giờ hãy làm quen với lớp WP_User_Query. Hoạt động bên trong của nó một lần nữa rất giống với truy vấn bài đăng WordPress, WP_Query. Đây là cú pháp cơ bản của nó

1

2

// cách sử dụng lớp WP_User_Query đơn giản nhất có thể

$user_query = new WP_User_Query ( $args );

Bây giờ là lúc tập hợp tất cả người dùng đã đặt trường người dùng tùy chỉnh. Do đó, bạn tìm thấy tất cả người dùng có giá trị đó, giá trị này có thể được đặt bởi một plugin khác hoặc chính người dùng đó

1

2

3

4

5

6

7

8

// Rất nhiều đối số có thể được thông qua

// Ở đây chúng tôi có tất cả người dùng với nghề nghiệp "nhà phát triển"

$args   = mảng (

    'meta_key' = > 'ococation'<, //any custom field name

    'meta_value' = > 'developer'< //the value to compare against

);

 

$user_query = new WP_User_Query ( $args );

Điều này sẽ truy xuất tất cả những người dùng đã đăng ký đáp ứng các tiêu chí đã chỉ định, trong trường hợp của chúng tôi, chúng tôi chỉ muốn kéo những người dùng có khóa meta nghề nghiệp với “nhà phát triển” được đặt làm giá trị. Trên thực tế, đoạn mã này là một phiên bản ngắn hơn của đoạn mã này

1

2

3

4

5

6

7

$args   = mảng (

    'meta_key' = > 'ococation'<,

    'meta_value' = > 'developer'<,

    'meta_compare' = > '='< // exact match only

);

 

$user_query = new WP_User_Query ( $args );

Ở đó chúng ta có thể thấy thuộc tính meta_compare  . Nó được đặt thành “=” theo mặc định, nhưng có rất nhiều thao tác khác nhau mà bạn có thể thực hiện với nó. Vì vậy, bạn có thể sử dụng các giá trị này.

  • ‘=’ / ‘. =’ – Chính xác
  • ‘>’ / ‘>=’ / ‘<‘ / ‘<=’ – Lớn hơn, lớn hơn hoặc bằng, nhỏ hơn, nhỏ hơn hoặc bằng
  • 'THÍCH' / 'KHÔNG THÍCH' - Tìm các kết quả khớp một phần cho nội dung, bên trong chuỗi. Sau đó, nếu bạn tìm kiếm “web”, bạn không chỉ nhận được “web” mà còn cả “thiết kế web” và “mạng nhện”
  • 'IN' / 'NOT IN' – Cho phép chỉ định nhiều giá trị để khớp
  • ‘GIỮA’ / ‘KHÔNG GIỮA’ – Cho phép khớp dựa trên một loạt các giá trị. Ví dụ: bạn có thể tìm kiếm người dùng có độ tuổi từ 20 đến 30
  • 'EXISTS' / 'NOT EXISTS' – Chỉ cần kiểm tra xem giá trị meta có được đặt hay không
  • 'REGEXP' / 'RLIKE' / 'NOT REGEXP' – Sử dụng các biểu thức thông thường trong tìm kiếm của bạn (RLIKE chỉ là một thuật ngữ khác của REGEXP)

Do đó, bạn không chỉ có thể tìm các giá trị chính xác cho các trường tùy chỉnh của mình mà còn cố gắng tìm các giá trị khác, lớn hơn, thấp hơn, tương tự hoặc thậm chí sử dụng các biểu thức chính quy. Theo ví dụ của chúng tôi, chúng tôi có thể tìm thấy tất cả người dùng KHÔNG phải là nhà phát triển với mã này

1

2

3

4

5

6

7

$args   = mảng (

    'meta_key' = > 'ococation'<,

    'meta_value' = > 'developer'<,

    'meta_compare' = > '. =' // mọi thứ trừ đối sánh chính xác

);

 

$user_query = new WP_User_Query ( $args );

Ngoài ra, chúng ta có thể kết hợp nhiều bộ tham số. Điều này được thực hiện bằng cách sử dụng tham số meta_query   và thêm vào bên trong tham số đó một mối quan hệ. Sau đó, chúng tôi thêm từng tham số khác nhau của chúng tôi. Chẳng hạn, chúng tôi có thể tìm thấy tất cả các nhà phát triển đến từ Hoa Kỳ và có hơn 5 năm kinh nghiệm.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

// chúng tôi sử dụng đối số meta_query để tải một bộ quy tắc

$args = mảng (

    'meta_query' = > mảng(

        'quan hệ' = > 'VÀ'<, // Could be OR, default is AND

            mảng (

                'key'     = > 'occupation',

                        'giá trị'   = > 'developer',

                         'so sánh' = > '='<

             ),

            mảng (

                'key'     = > 'billing_country',

                        'giá trị'   = > 'United States',

                         'so sánh' = > '='<

             ),

            mảng (

                'key'     = > 'experience',,

                        'giá trị'   = > '5',

                         'so sánh' = > '>=' // greater than or equal to 5

             )

     )

);

 

$user_query = new WP_User_Query ( $args );

Từ đoạn mã trên, chúng ta có thể thấy cách kết hợp các tiêu chí tìm kiếm khác nhau. Các mối quan hệ có thể chúng ta có thể sử dụng là AND và OR. Nếu chúng tôi đặt nó thành VÀ, kết quả của chúng tôi sẽ khớp với TẤT CẢ các quy tắc của chúng tôi. Nếu chúng tôi đặt HOẶC kết quả của chúng tôi là bất kỳ mục nào phù hợp với BẤT KỲ quy tắc nào của chúng tôi

Hơn nữa, chúng ta có thể sử dụng một số tham số “tối nghĩa” hơn để có kết quả tuyệt vời trong tìm kiếm truy vấn meta WordPress của mình. Hãy kiểm tra lại ví dụ trước. Ở đó, chúng tôi tìm kiếm người dùng có nghề nghiệp "Nhà phát triển". Nhưng nếu chúng tôi có một người dùng là “Nhà phát triển PHP”, kết quả là chúng tôi sẽ không thấy anh ấy. Trong trường hợp này, chúng ta có thể sử dụng toán tử LIKE .

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

$args = mảng (

    'meta_query' = > mảng(

        'quan hệ' = > 'VÀ'<,

            mảng (

                'key'     = > 'occupation',

                        'giá trị'   = > 'developer',

                         'so sánh' = > 'THÍCH'< // any value that contains developer

             ),

            mảng (

                'key'     = > 'billing_country',

                        'giá trị'   = > 'United States',

                         'so sánh' = > '='<

             ),

            mảng (

                'key'     = > 'experience',,

                        'giá trị'   = > '5',

                         'so sánh' = > '>='

             )

     )

);

 

$user_query = new WP_User_Query ( $args );

Ngoài ra, chúng tôi có thể muốn kiểm tra phạm vi giá trị. Giả sử rằng trong các trường người dùng tùy chỉnh WordPress của chúng tôi, chúng tôi có tỷ lệ hàng giờ cho các nhà phát triển. Nếu chúng tôi muốn tìm kiếm một giá trị nằm trong phạm vi ngân sách của mình, chúng tôi có thể thử so sánh BETWEEN .

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

$args = mảng (

    'meta_query' = > mảng(

        'quan hệ' = > 'VÀ'<,

            mảng (

                'key'     = > 'occupation',

                        'giá trị'   = > 'developer',

                         'so sánh' = > 'THÍCH'<

             ),

            mảng (

                'key'     = > 'rate',

                        'giá trị'   = > array( 30, 60 ),

                'type'     = > 'numeric',

                        'so sánh' = > 'GIỮA'< // any value within that range of 30-60

             )

     )

);

 

$user_query = new WP_User_Query ( $args );

Đặt hàng theo meta người dùng

Thông thường, khi chúng tôi thực hiện truy vấn meta người dùng WordPress, chúng tôi cần kết quả theo một thứ tự nhất định. WP_User_Query có thông số orderby mà chúng tôi có thể sử dụng thông số này cho các trường tùy chỉnh .

1

2

3

4

5

6

7

$args   = mảng (

    'meta_key' = > 'age'<, // required for the orderby parameter

    'orderby' = > 'meta_value'<,

    'order' = > 'DESC'<

);

 

$user_query = new WP_User_Query ( $args );

Mã này sẽ hoạt động tốt và nó tải những người dùng của chúng tôi được sắp xếp theo độ tuổi của họ

Ngoại trừ khi nó không

Vấn đề ở đây là orderby của chúng ta sẽ chỉ hoạt động khi có giá trị meta trong truy vấn của chúng ta. Và điều này có nghĩa là chúng tôi không thể ra lệnh cho người dùng không có giá trị nào được đặt trong trường tùy chỉnh của họ

Do đó, nếu chúng tôi cần tải người dùng WordPress được sắp xếp theo các trường tùy chỉnh bao gồm các giá trị trống, thì chúng tôi cần thứ khác. Một cách để giải quyết vấn đề này đơn giản là tải tất cả người dùng, sau đó sử dụng hành động pre_user_query để thêm một số mã bổ sung vào truy vấn mặc định. Bằng cách này, mã của chúng tôi sẽ tải tất cả người dùng, sau đó chúng tôi tải các trường tùy chỉnh của họ và sắp xếp chúng.

Đây là cách mã đó sẽ trông như thế nào

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

hàm load_users_with_meta () {

    //thêm chức năng của chúng tôi vào đầu user_query

    add_action ( 'pre_user_query' , 'add_my_custom_queries' );

    

    //một WP_User_Query đơn giản với kết quả là tên hiển thị

    $query = new WP_User_Query(

        mảng (

            'trường' = > mảng( 'display_name' )

         )

     );

    

    //đang xử lý WP_USER_QUERY

    $users = $query - >get_results();

    

    //chúng ta cần xóa hành động này để nó không gây rối với các truy vấn còn lại của người dùng

    remove_action ( 'pre_user_query' , 'add_my_custom_queries' );

    

    //hãy xuất người dùng của chúng ta ngay bây giờ

    print_r ( $users );

    

}

 

function add_my_custom_queries ( $query ) {

    toàn cầu $wpdb ;

    

    //hãy thêm billing_coutry vào các trường meta trong truy vấn của chúng ta

    $query - >query_fields .= ', billing_country. meta_value' ;

 

    //bây giờ, chúng tôi thêm liên kết trái để thực sự thu thập quốc gia thanh toán cho người dùng của chúng tôi

    $query - >query_from .= " THAM GIA TRÁI $wpdb->usermeta billing_country BẬT $wpdb->users. ID = " .

        "billing_country. user_id và billing_country. meta_key = 'billing_country'" ;

    

   //và bước cuối cùng là sắp xếp thứ tự cho người dùng dựa trên giá trị quốc gia thanh toán, nếu có

    $query - >query_orderby = ' ORDER BY billing_country.meta_value DESC' ;

}

 

// chỉ là một cách để xuất kết quả của chúng ta, có thể ở các hook khác hoặc một lệnh gọi trực tiếp đến hàm

add_action ( 'init' , 'load_users_with_meta' );

Mã này sẽ tải tất cả người dùng với tên hiển thị của họ. Xin lưu ý rằng truy vấn chính không bao gồm bất kỳ thao tác nào để sắp xếp người dùng theo trường meta. Sau đó, WordPress sẽ áp dụng truy vấn SQL bổ sung của chúng tôi. Truy vấn đó sẽ tải các trường tùy chỉnh cho người dùng của chúng tôi và sắp xếp chúng dựa trên các giá trị. Trong trường hợp của chúng tôi, chúng tôi đã sử dụng trường tùy chỉnh “billing_country”, nhưng bạn có thể sử dụng bất kỳ trường nào bạn muốn

Thêm và cập nhật giá trị meta của người dùng

Việc thêm và cập nhật meta người dùng trong WordPress hoạt động giống như với hệ thống meta bài đăng. Có hai chức năng chính mà chúng ta có thể sử dụng cho việc này. update_user_meta ()   và get_user_meta . Hàm  . The update_user_meta ()   hoạt động dựa trên ID người dùng và nếu trường meta cho người dùng không tồn tại, nó sẽ .

Bây giờ hãy xem một cách tiếp cận dễ dàng hơn nhiều

Truy vấn người dùng dựa trên các trường meta tùy chỉnh với Thông tin chi tiết về người dùng

Có thể sử dụng Thông tin chi tiết về người dùng để tìm kiếm và sắp xếp người dùng dựa trên các trường meta người dùng của họ. Bằng cách này, bạn có thể khắc phục những hạn chế của cách tiếp cận chỉ viết mã. Ví dụ: nếu bạn chỉ muốn thay đổi một tham số tìm kiếm, thì việc thực hiện điều đó trong mã của bạn sẽ khó hơn nhiều

Yếu tố đầu tiên của tìm kiếm của chúng tôi là các trường tùy chỉnh của chúng tôi. Đảm bảo rằng bạn đã ánh xạ các trường người dùng tùy chỉnh của mình và bạn có thể sử dụng chúng. Hãy hồi sinh các tìm kiếm truy vấn meta WordPress của chúng tôi chỉ bằng một vài cú nhấp chuột

Kịch bản đầu tiên của chúng tôi chỉ đơn giản là lọc người dùng dựa trên nghề nghiệp của họ. Điều này có thể được thực hiện bằng cách sử dụng bộ lọc Nghề nghiệp. Bạn có thể sử dụng các biến thể của trường đó để tìm kiếm “chứa”, “bắt đầu bằng”, “kết thúc bằng” và các từ khác

Wordpress get_users meta_query

Khi nói đến việc kết hợp các bộ lọc, bạn có thể sử dụng chúng với toán tử AND trong Thông tin chi tiết về người dùng. Vì vậy, để tìm được những developer đến từ Mỹ với hơn 5 năm kinh nghiệm, bạn có thể thử điều này

Wordpress get_users meta_query

Ngoài ra, chúng tôi có thể thêm ranh giới trên và dưới cho tìm kiếm phạm vi. Giống như những gì chúng tôi đã làm để tìm nhà phát triển và mức lương theo giờ của họ

Wordpress get_users meta_query

Hơn nữa, có thể xuất người dùng của chúng tôi, trong trường hợp chúng tôi muốn liên hệ với họ. Bạn chỉ cần nhấp vào nút xuất

Wordpress get_users meta_query

Bây giờ là lúc cho một trong những thử thách khó khăn nhất mà chúng ta thấy ngày hôm nay. đặt hàng. Trái ngược với rất nhiều mã tùy chỉnh, bạn chỉ cần nhấp vào cột bạn muốn đặt hàng theo. Điều đó sẽ sắp xếp tất cả người dùng dựa trên tiêu chí đó, kể cả những người dùng không có tiêu chí đó

Wordpress get_users meta_query

Thêm và cập nhật dữ liệu meta người dùng tùy chỉnh

Tính năng Trường tùy chỉnh của Thông tin chi tiết về người dùng cho phép bạn tạo và cập nhật thông tin meta người dùng của riêng mình mà không cần viết mã. Nó cung cấp một giao diện liền mạch để đăng ký các trường tùy chỉnh và cập nhật dữ liệu trường cho từng người dùng. Ngoài ra, dữ liệu trường tùy chỉnh được tự động thêm vào bộ lọc Thông tin chi tiết về người dùng, vì vậy bạn có thể lọc người dùng WordPress theo dữ liệu trường tùy chỉnh của mình

Bạn có thể đăng ký các trường meta người dùng tùy chỉnh trong phần Trường tùy chỉnh của Thông tin chi tiết về người dùng

Wordpress get_users meta_query

Sau khi các trường tùy chỉnh được đăng ký, bạn có thể xem trước và cập nhật dữ liệu cho từng người dùng trong phần hồ sơ người dùng

Wordpress get_users meta_query

Bạn có thể chỉnh sửa từng dữ liệu trường tùy chỉnh bằng cách nhấp vào biểu tượng Chỉnh sửa và tùy thuộc vào loại dữ liệu, bạn sẽ có tùy chọn thêm văn bản, số, ngày hoặc chọn từ một trường đã chọn