Khóa meta người dùng trong WordPress là gì?

Trong bài viết này, chúng ta sẽ đi sâu vào làm việc với các hàm meta của người dùng WordPress và hiểu cách dữ liệu được lưu trữ trong cơ sở dữ liệu. Mục tiêu chính của chúng tôi là xây dựng một hướng dẫn đầy đủ về các chức năng meta người dùng WordPress

Dưới đây là những chủ đề chính mà chúng ta sẽ đề cập hôm nay

  • Tổng quan chi tiết về các chức năng meta chính của người dùng WordPress với các ví dụ
  • Cách các loại dữ liệu khác nhau được lưu trữ trong cơ sở dữ liệu và được trả về
  • Tìm kiếm meta người dùng WordPress

Bây giờ, hãy bắt đâù

Khóa meta người dùng trong WordPress là gì?

Chức năng siêu dữ liệu người dùng WordPress

Các chức năng mà chúng ta sẽ trải qua hôm nay là những chức năng cho phép chúng ta tạo, đọc, cập nhật và xóa dữ liệu meta của người dùng. Mỗi người trong số họ có các chi tiết cụ thể quan trọng cần biết khi làm việc với các chức năng này. Nếu chúng tôi gọi chúng không chính xác, chúng tôi có thể nhận được kết quả không mong muốn hoặc thậm chí mất một số dữ liệu. Bây giờ, hãy đi qua từng chức năng

  • add_user_meta

Như bạn có thể tưởng tượng, chức năng này thêm các trường meta người dùng WordPress. Các trường này có thể được sử dụng trong plugin, trang hồ sơ và lưu trữ thông tin đơn giản. Chức năng này chỉ có thể thêm thông tin mặc dù. Do đó, nó sẽ không hoạt động đối với các hoạt động cập nhật

Chức năng có thể được gọi với các tham số sau

1

2

3

4

5

6

add_user_meta (

   ( int ) $user_id,

   ( chuỗi ) $meta_key,

   ( hỗn hợp ) $meta_value,

   ( boolean ) $unique = false

);

Giá trị trả về

Hàm sẽ trả về ID của bản ghi meta được tạo thành công. Nếu không, nó sẽ trả về false .

Tham số $unique

Tham số  $unique  chỉ định liệu có nên lưu trữ một giá trị cho trường người dùng này hay cho phép nhiều giá trị. Giá trị mặc định là  false  , nghĩa là bạn có thể lưu trữ nhiều giá trị cho người dùng và khóa meta được chỉ định.

Hãy xem một số ví dụ

1

2

$res1 = add_user_meta ( 1, 'languages', 'English'); // $res1 is 20

$res2 = add_user_meta ( 1, 'languages', 'Italian'); // $res2 is 21

Trong ví dụ này, chúng tôi đã thêm hai giá trị meta cho trường “ngôn ngữ” của người dùng 1. Như bạn có thể thấy, chúng tôi đã để trống tham số  $unique , nghĩa là tham số được đặt thành  false< . Bằng cách này, chúng ta có thể thêm nhiều giá trị cho trường người dùng này.  by default. In this way, we can add multiple values for this user field.

Cả hai phần bổ sung đều được thực thi thành công và kết quả của các lệnh chứa ID của các bản ghi đã tạo. Đây là cách các giá trị được lưu trữ trong cơ sở dữ liệu

Khóa meta người dùng trong WordPress là gì?

Bây giờ, hãy thử tương tự với người dùng 2, nhưng lần này chúng ta sẽ đặt  $unique  thành  true :

1

2

$res1 = add_user_meta ( 2, 'languages', 'English', true); // $res1 is 36

$res2 = add_user_meta ( 2, 'languages', 'Italian', true); // $res2 is false

Với ví dụ này, dòng đầu tiên sẽ được thực thi thành công và nó sẽ trả về ID của bản ghi meta. Tuy nhiên, khi chúng tôi cố gắng thêm một giá trị khác trên dòng thứ hai, giá trị đó sẽ không được thêm vào do tính duy nhất được thực thi. Và đây là những gì chúng ta sẽ có trong cơ sở dữ liệu sau khi chạy mã này

Khóa meta người dùng trong WordPress là gì?

 

  • update_user_meta

Hàm này hoạt động khá giống với hàm add_user_meta  . Sự khác biệt là chức năng này cũng có thể được sử dụng để ghi đè lên thông tin. Do đó, nếu bạn muốn thêm hoặc chỉnh sửa các trường người dùng hiện tại, đây là cách tiếp cận linh hoạt hơn. Một điểm khác biệt là chức năng này có thể được sử dụng để tạo các trường người dùng tùy chỉnh, nhưng chỉ một lần. Nếu bạn chạy add_user_meta 100 lần, bạn có 100 mục nhập. Nếu bạn chạy chức năng cập nhật 100 lần, bạn chỉ có một giá trị duy nhất.

Chức năng có thể được gọi với các tham số sau

1

2

3

4

5

6

update_user_meta (

   ( int ) $user_id,

   ( chuỗi ) $meta_key,

   ( hỗn hợp ) $meta_value,

   ( hỗn hợp ) $prev_value = ''

);

Giá trị trả về

Hàm này có thể có các kết quả khác nhau tùy thuộc vào cách nó được gọi và các giá trị được lưu trữ hiện có. Nó trở lại

  • ID của bản ghi meta khi bản ghi mới được tạo
  • true  khi cập nhật bản ghi hiện có
  • false  khi cập nhật không thành công hoặc khi giá trị hiện tại giống với giá trị đã cập nhật (e. g. không có thay đổi về giá trị)

Hãy xem một ví dụ đơn giản về việc tạo và cập nhật một giá trị cho người dùng và kết quả trả về. Chúng tôi bắt đầu không có giá trị meta hiện có cho người dùng 1. Lần đầu tiên chúng tôi chạy chức năng, sẽ có một bản ghi mới được tạo vì không có bản ghi hiện có với khóa meta này cho người dùng này

1

$res = update_user_meta ( 1, 'color_scheme', 'blue'); // $res is 38

Lệnh gọi hàm này sẽ trả về ID của bản ghi meta mới. Đây là cách bản ghi trông trong cơ sở dữ liệu

Khóa meta người dùng trong WordPress là gì?

Nếu chúng ta gọi hàm  update_user_meta  một lần nữa, nhưng với một giá trị khác.

1

$res = update_user_meta ( 1, 'color_scheme', 'green'); // $res is true

Lần này bản ghi hiện có sẽ được cập nhật với giá trị “green”. Và hàm sẽ trả về  true . Đây là giao diện của bản ghi được cập nhật trong cơ sở dữ liệu.

Khóa meta người dùng trong WordPress là gì?

Và nếu chúng ta thực thi lại cùng một mã với cùng một giá trị meta

1

$res = update_user_meta ( 1, 'color_scheme', 'green'); // $res is false

Lần này hàm sẽ trả về  false , vì không có thay đổi nào về giá trị.

Tham số $prev_value

Khi tham số $prev_value   được chỉ định, chỉ những bản ghi có giá trị được chỉ định mới được cập nhật.

Hãy xem một ví dụ. Giả sử rằng đối với trường “color_scheme”, người dùng 1 có giá trị là “green” và user 2 có giá trị là “blue” như minh họa ở đây

Khóa meta người dùng trong WordPress là gì?

Nếu sau đó chúng tôi chạy đoạn mã sau cho cả hai người dùng, mã này chỉ cập nhật giá trị thành màu đỏ khi giá trị hiện có là “màu xanh lá cây”

1

2

$res1 = update_user_meta ( 1, 'color_scheme', 'red', 'green'); // $res1 is true

$res2 = update_user_meta ( 2, 'color_scheme', 'red', 'green'); // $res2 is false

Chúng ta sẽ thấy rằng đối với người dùng 1, bản cập nhật sẽ được thực thi thành công và nó sẽ trả về  true . Tuy nhiên, đối với người dùng 2, bản cập nhật sẽ không được áp dụng vì giá trị hiện tại khác với giá trị "xanh lục" và do đó, hàm sẽ trả về return  false . Đây là kết quả của việc chạy mã này.

Khóa meta người dùng trong WordPress là gì?

Thông số $prev_value  cũng có thể được sử dụng để cập nhật một giá trị khi có nhiều bản ghi có cùng khóa meta cho người dùng được chỉ định.

Để minh họa điều này, hãy sử dụng ví dụ ở trên nơi chúng tôi đã thêm hai mục cho khóa meta “ngôn ngữ”

Khóa meta người dùng trong WordPress là gì?

Nếu chúng tôi chỉ muốn cập nhật một trong các giá trị, chúng tôi có thể sử dụng đoạn mã sau

1

$res = update_user_meta ( 1, 'languages', 'Spanish', 'Italian') // $res is true

Và đây là kết quả của việc cập nhật trong cơ sở dữ liệu

Khóa meta người dùng trong WordPress là gì?

Ở đây, điều quan trọng cần đề cập là với nhiều giá trị meta cho mỗi khóa meta, nếu chúng tôi bỏ qua tham số $prev_value .

1

$res = update_user_meta ( 1, 'languages', 'Dutch'); // $res is true

Tất cả các trường có khóa meta này sẽ được cập nhật cho người dùng này

Khóa meta người dùng trong WordPress là gì?

 

  • get_user_meta

Khi nói đến tìm kiếm và hiển thị meta người dùng WordPress, đây là chức năng bạn cần. Hàm này rất linh hoạt và đối số bắt buộc duy nhất là đối số đầu tiên

1

2

3

4

5

get_user_meta (

   ( int ) $user_id,

   ( chuỗi ) $meta_key = '',

   ( boolean ) $single = false

);

Giá trị trả về

Chức năng này có thể có nhiều kết quả khác nhau tùy thuộc vào nhiều yếu tố

  • khi tham số  $single  được đặt thành  true , . Nếu không có giá trị nào tồn tại, nó sẽ trả về một chuỗi rỗng
  • khi tham số  $single  được đặt thành  false ,
  • khi  $meta_key  trống, nó sẽ trả về một mảng gồm tất cả các trường meta hiện có cho người dùng đã chỉ định

Đó là lý do tại sao điều quan trọng là phải hiểu cách chức năng  get_user_meta  hoạt động trong các tình huống khác nhau.

get_user_meta với các giá trị đơn lẻ

Hãy bắt đầu với ví dụ sau, nơi chúng tôi lưu trữ một giá trị cho mỗi khóa meta. Như bạn có thể thấy trên ảnh chụp màn hình bên dưới, chúng tôi có hai giá trị khác nhau được lưu trữ cho người dùng 1 và người dùng 2

Khóa meta người dùng trong WordPress là gì?

Nếu chúng ta gọi hàm get_user_meta  bằng cách bỏ qua $single parameter, this parameter will default to  false. This means that we are expecting this field to have multiple values and therefore the function will return an array, where the first element is the user value.

1

$res = get_user_meta ( 1, 'occupation'); // $res is array('Graphic Designer')

Đó là lý do tại sao, nếu chúng tôi muốn trường này có một giá trị duy nhất, thì chúng tôi cần đặt rõ ràng tham số  $single   thành  true:

1

$res = get_user_meta ( 1, 'occupation', true); // $res is 'Graphic Designer'

Theo cách này, kết quả sẽ là một giá trị dưới dạng chuỗi

get_user_meta với nhiều giá trị

Nếu trường meta có thể chứa nhiều giá trị, thì tham số  $single phải được đặt thành  . Đây là giá trị mặc định nên chúng ta có thể bỏ qua tham số này trong trường hợp này. . This is the default value, so we can omit this parameter in this case.

Hãy xem một ví dụ trong đó mỗi người dùng có thể có nhiều giá trị cho cùng một trường. Như bạn có thể thấy trên ảnh chụp màn hình bên dưới, người dùng 1 có hai giá trị cho trường này

Khóa meta người dùng trong WordPress là gì?

Nếu chúng tôi chạy đoạn mã sau, chúng tôi sẽ nhận được tất cả các giá trị cho trường này của người dùng

1

$res = get_user_meta ( 1, 'languages'); // $res is array('English', 'Italian')

Tuy nhiên, nếu chúng ta đặt tham số  $single  thành  true, we’ll only get the first value:

1

$res = get_user_meta ( 1, 'languages', true); // $res is 'English'

get_user_meta với các giá trị null

Điều quan trọng là phải hiểu hàm trả về giá trị gì khi không có giá trị nào được lưu trữ cho trường người dùng đã chỉ định. Một lần nữa, điều này chủ yếu phụ thuộc vào tham số  $single . Khi bị bỏ qua (hoặc được đặt thành  false ), nó sẽ trả về một mảng trống.

1

$res = get_user_meta ( 1, 'some_field'); // $res is array()

Ngược lại, khi được đặt thành  true , nó sẽ trả về một chuỗi trống.

1

$res = get_user_meta ( 1, 'some_field', true); // $res is ''

get_user_meta không có meta_key nào được chỉ định

Nếu bạn chỉ định $user_id  thì bạn sẽ có được tất cả meta người dùng WordPress. Tất cả các trường và giá trị tùy chỉnh sẽ được tải dưới dạng một mảng lớn duy nhất. Ví dụ: chạy đoạn mã sau sẽ tải tất cả các trường meta người dùng cho người dùng 1.

1

$res = get_user_meta ( 1);

Kết quả sẽ như thế này

1

2

3

4

5

6

mảng (

  'nickname' = > mảng('admin'),

  'first_name' = > mảng('John'),

  'ngôn ngữ' = > mảng('English', 'Italian'),

   .

)

 

  • xóa_user_meta

Bây giờ, yếu tố tiếp theo để thao tác trường tùy chỉnh là thao tác xóa. Hàm này hoạt động rất giống với hàm update_user_meta  , theo nghĩa là hàm này cố gắng tìm kiếm các giá trị cụ thể. Do đó, nếu bạn chỉ định xóa giá trị meta người dùng WordPress nào, nó sẽ chỉ xóa giá trị đó. Nếu bạn chỉ định không có giá trị, chức năng này sẽ xóa toàn bộ khóa meta.

1

2

3

4

5

delete_user_meta (

   ( int ) $user_id,

   ( chuỗi ) $meta_key,

   ( hỗn hợp ) $meta_value = ''

);

Giá trị trả về

Hàm này trả về một giá trị boolean –  true  khi xóa thành công và  false for failure.

Tham số $meta_value   cho phép bạn chỉ định giá trị mà trường cần xóa phải chứa. Ví dụ: đoạn mã sau sẽ xóa tất cả các trường meta có "ngôn ngữ" chính cho người dùng 1. Không quan trọng nếu có một giá trị hay nhiều giá trị, tất cả chúng sẽ bị xóa.

1

$res = delete_user_meta ( 1, 'languages');

Tuy nhiên, nếu chúng tôi chỉ định tham số  $meta_value   thì chúng tôi chỉ có thể xóa các giá trị cụ thể. Ví dụ: nếu người dùng 1 có các giá trị này được lưu trữ cho trường “ngôn ngữ”.

Khóa meta người dùng trong WordPress là gì?

và chúng tôi đặt thông số  $meta_value   thành 'Tiếng Anh'.

1

$res = delete_user_meta ( 1, 'languages', 'English'); // $res is true

chỉ bản ghi có giá trị 'Tiếng Anh' sẽ bị xóa và hàm sẽ trả về  true .

Khóa meta người dùng trong WordPress là gì?

Nếu không có trường nào có giá trị được chỉ định trong tham số  $meta_value  thì sẽ không có bản ghi nào bị xóa và hàm sẽ trả về  false.

1

$res = delete_user_meta ( 1, 'languages', 'Inexisting value'); // $res is false

 

Cách các loại dữ liệu khác nhau được lưu trữ trong cơ sở dữ liệu và được trả về

Cột bảng meta_value  trong cơ sở dữ liệu thuộc loại “longtext”, có nghĩa là nó chỉ có thể lưu trữ các chuỗi. Do đó, các phép toán luận, số và chuỗi đều được lưu dưới dạng chuỗi. Mảng được lưu trữ dưới dạng chuỗi được tuần tự hóa. Một số giá trị này được trả về ở định dạng mà chúng được lưu trữ. Những thứ khác được xử lý bởi WordPress và được trả về ở kiểu dữ liệu PHP ban đầu của chúng. Đó là lý do tại sao, để tránh mắc lỗi, điều quan trọng là phải hiểu cách mọi thứ hoạt động. Hãy đi qua từng loại dữ liệu chính.

Booleans

Boolean true  được lưu trữ dưới dạng chuỗi “1” trong cơ sở dữ liệu. false  được lưu trữ dưới dạng chuỗi rỗng.

Do đó, hãy chạy đoạn mã sau

1

2

add_user_meta ( 1 , 'premium_user', true);

add_user_meta ( 2 , 'premium_user', false);

Sẽ tạo các bản ghi sau

Khóa meta người dùng trong WordPress là gì?

và khi tải dữ liệu bằng  get_user_meta , các giá trị được trả về ở cùng định dạng như được lưu trữ trong cơ sở dữ liệu.

1

2

$res1 = get_user_meta ( 1, 'premium_user', true); // $res1 is "1"

$res2 = get_user_meta ( 2, 'premium_user', true); // $res2 is ""

Vì vậy, để đảm bảo rằng bạn sẽ làm việc với các giá trị boolean thực tế, bạn sẽ cần nhập các kết quả

1

2

$res1 = ( boolean ) get_user_meta(1, 'premium_user', true); // $res1 is true

$res2 = ( boolean ) get_user_meta(2, 'premium_user', true); // $res2 is false

số

Số cũng được chuyển đổi thành chuỗi. Do đó đoạn mã sau

1

2

add_user_meta ( 1 , 'đơn đặt hàng', 0);

add_user_meta ( 2 , 'đơn đặt hàng', 1);

sẽ lưu trữ các giá trị lần lượt là “0” và “1” trong cơ sở dữ liệu

1

2

$res1 = get_user_meta ( 1, 'orders', true); // $res1 is "0"

$res2 = get_user_meta ( 2, 'orders', true); // $res2 is "1"

Vì vậy, một lần nữa nên đánh máy để đảm bảo rằng chúng tôi đang làm việc với các số thực. Bạn có thể nhập cast thành  int  hoặc  float  tùy thuộc vào loại .

1

2

$res1 = ( int ) get_user_meta(1, 'orders', true); // $res1 is 0

$res2 = ( int ) get_user_meta(2, 'orders', true); // $res2 is 1

Mảng

Mảng được lưu trữ dưới dạng chuỗi được tuần tự hóa PHP trong cơ sở dữ liệu

Hãy xem một ví dụ. Ở đây chúng ta sẽ tạo một trường meta với một giá trị mảng. Mỗi giá trị của mảng sẽ thuộc một kiểu dữ liệu khác nhau, vì vậy chúng ta có thể minh họa cách lưu trữ và xử lý sau này

1

2

$value = mảng ( 'green'<, 1, true);

add_user_meta ( 1 , 'chi tiết', $value);

Và đây là cách giá trị này trông trong cơ sở dữ liệu

Khóa meta người dùng trong WordPress là gì?

Tuy nhiên, lần này WordPress thực hiện định dạng dữ liệu cho chúng tôi khi tải dữ liệu bằng hàm  get_user_meta  và trả về kết quả dưới dạng một mảng.

1

$res = get_user_meta ( 1, 'details', true); // $res is array('green', 1 ,true)

Ở đây bạn có thể nhận thấy rằng định dạng của các giá trị trong mảng được giữ nguyên

giá trị null

Giá trị null được lưu trữ dưới dạng NULL trong cơ sở dữ liệu. Điều này thật tuyệt, vì chúng tôi sẽ không cần thực hiện bất kỳ thao tác truyền kiểu nào

Ví dụ: sau khi chạy đoạn mã sau

1

add_user_meta ( 1 , 'địa chỉ', null);

Bản ghi sẽ được tạo như thế này trong cơ sở dữ liệu

Khóa meta người dùng trong WordPress là gì?

Và khi load giá trị thì kết quả trả về là null luôn

1

$res = get_user_meta ( 1, 'address', true); // $res is null

 

Quản lý và tìm kiếm meta người dùng

Trong trường hợp bạn không muốn viết mã, có thể sử dụng plugin để quản lý meta người dùng WordPress. Với Thông tin chi tiết về người dùng, bạn có thể thêm các trường tùy chỉnh, chỉnh sửa giá trị của chúng và nhận người dùng dựa trên các trường người dùng tùy chỉnh. Để biết thêm thông tin, hãy xem hướng dẫn chi tiết của chúng tôi về Quản lý trường meta người dùng tùy chỉnh

Trường tùy chỉnh có thể được sử dụng để tạo trường mới hoặc quản lý trường meta người dùng hiện có. Bạn có thể ánh xạ các trường tùy chỉnh hiện có trong Thông tin chi tiết về người dùng > Trường tùy chỉnh. Ở đó bạn có thể đặt loại trường tùy chỉnh (văn bản, ngày, số, danh sách thả xuống). Ví dụ: nếu bạn đang thêm các trường này bằng plugin, bạn có thể tìm kiếm người dùng ngay bây giờ dựa trên các giá trị này. Trong bài viết Cách hiển thị, tìm kiếm và lọc siêu dữ liệu người dùng WordPress, chúng tôi đã mô tả quy trình chi tiết hơn. Tuy nhiên, chúng ta hãy đi qua một vài ví dụ

Khóa meta người dùng là gì?

API Meta người dùng WordPress . Giá trị là thông tin sẽ xuất hiện trong danh sách siêu dữ liệu trên mỗi bài đăng riêng lẻ mà thông tin được liên kết với. the name of the meta-data element. The value is the information that will appear in the meta-data list on each individual post that the information is associated with.

Tại sao WP có bảng Usermeta?

Do đó, để lưu trữ dữ liệu bổ sung , bảng usermeta đã được giới thiệu, có thể lưu trữ bất kỳ lượng dữ liệu tùy ý nào về người dùng. Cả hai bảng được liên kết với nhau bằng mối quan hệ một-nhiều dựa trên ID trong bảng người dùng.

Khóa meta WooC Commerce là gì?

Về cơ bản, khóa meta là một cách để thêm dữ liệu bổ sung vào đơn đặt hàng WooC Commerce . Dữ liệu này có thể là bất cứ thứ gì từ ghi chú của khách hàng đến chi tiết đơn hàng. Tuy nhiên, nếu không cẩn thận, bạn rất dễ vô tình thêm siêu dữ liệu mà mình không muốn hoặc không cần thiết.