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 Show
Dưới đây là những chủ đề chính mà chúng ta sẽ đề cập hôm nay
Bây giờ, hãy bắt đâù Chức năng siêu dữ liệu người dùng WordPressCá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
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ố $uniqueTham 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 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
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
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 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. 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_valueKhi 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 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. 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ữ” 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 Ở đâ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
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ố
Đó 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 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 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ỉ địnhNế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'), . )
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ữ”. 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 . 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. BooleansBoolean 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 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ảngMả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 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ị nullGiá 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 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ùngTrong 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. |