前言
有时候,我们在进行wordpress开发时,总会遇到要给每个用户添加一个我们需要的字段,用以储存每个用户的配置。之前1500元为客户定制精简题库主题时(主题纯手写),我就遇到这样的问题,我需要在自己写的用户中心添加到期时间、用户余额、用户等级等字段。起初我先想的时在options表建立以用户ID加上固定字符为键值的设置字段,但后面我发现其实wordpress有自己的方式添加用户字段。两个方式都能实现,但是用wordpress的方式更加容易开发。我都简单说一下吧。
方法
1、options表储存用户字段的方法。
这种方法的话不太建议用,网上也少有这样的介绍,都是我自己想的,我在之前公司也确实用过这样的方式标记一些站点用户,使他们更加容易管理,也确实做到了这一点。
那时候我初学wordpress,就知道了options表(这个表就是我们设置的数据库前缀+options,默认是wp_options)的一些操作,其中包含get_option、add_option、update_option、delete_option四个函数,分别是:获取、新增、更新(无则添加)、删除options表的内容。
看到上面的表结构,学习了上面的函数,你也会想到,为每个用户新增一行记录,用来当作用户字段使用。但你仔细观察这个表,就能发现,这个表有大量开发者使用,主要用来存储一些设置参数等,官方设计这个表也是为了存储一些设置参数,但是有些时候你会看到这个表比我们的文章数量还多,所以我们不推荐使用这个方法来新增我们的用户自定义字段,但也不是不可以用。比如我们要新增一个用户余额,我们可以这样预想:用用户ID和固定字符串为键值来储存信息。比如我要更改一个用户的余额为10,我们可以使用update_option函数,这样使用:
update_option("yue".$userid,10);//注意,yue为余额的拼音(可以自己弄一个固定的),$userid为用户的ID
当我们需要获取某个用户的余额时候,我们可以这样:
$yue = get_option("yue".$userid);
2、wordpress官方推荐的用户字段处理
这里我就放一段代码吧,你们自己看一下,应该也是不难,代码也是从wordpress官网抄来的,然后自己改了一下,是一个剩余次数的字段,主要三个功能,用户自己编辑界面、管理员编辑界面和添加用户管理界面的表头三个功能,代码如下:
function wporg_usermeta_form_field_User_Times_Balance( $user )
{
?>
<br>
<h3>剩余次数</h3>
<table class="form-table">
<tr>
<th>
<label for="User_Times_Balance">剩余次数</label>
</th>
<td>
<input type="date"
class="regular-text ltr"
id="User_Times_Balance"
name="User_Times_Balance"
value="<?= esc_attr( get_user_meta( $user->ID, 'User_Times_Balance', true ) ) ?>"
title="Please use YYYY-MM-DD as the date format."
pattern="(19[0-9][0-9]|20[0-9][0-9])-(1[0-2]|0[1-9])-(3[01]|[21][0-9]|0[1-9])"
required>
<p class="description">
用户剩余次数<span style="color:red">小于1</span>,用户就不能使用!
</p>
</td>
</tr>
</table>
<?php
}
/**
* The save action.
*
* @param $user_id int the ID of the current user.
*
* @return bool Meta ID if the key didn't exist, true on successful update, false on failure.
*/
function wporg_usermeta_form_field_User_Times_Balance_update( $user_id )
{
// check that the current user have the capability to edit the $user_id
if ( ! current_user_can( 'edit_user', $user_id ) ) {
return false;
}
// create/update user meta for the $user_id
return update_user_meta(
$user_id,
'User_Times_Balance',
$_POST['User_Times_Balance']
);
}
// Add the field to user profile editing screen.将该字段添加到用户资料编辑界面。//管理员编辑其他用户
add_action(
'edit_user_profile',
'wporg_usermeta_form_field_User_Times_Balance'
);
// Add the save action to user profile editing screen update.在用户资料编辑界面更新中添加保存动作。//管理员编辑其他用户
add_action(
'edit_user_profile_update',
'wporg_usermeta_form_field_User_Times_Balance_update'
);
//Adds Custom Column To Users List Table 将字段添加到用户列表的表头
function custom_add_User_Times_Balance($columns) {
$columns['User_Times_Balance'] = '剩余次数';
return $columns;
}
add_filter('manage_users_columns', 'custom_add_User_Times_Balance');//表头
//Adds Content To The Custom Added Column
function custom_show_User_Times_Balance($value, $column_name, $user_id) {
$enddate = get_user_meta( $user_id, 'User_Times_Balance',true);
if ( 'User_Times_Balance' == $column_name ){
if($enddate){
return $enddate;
}else{
return "--";
}
}
}
add_filter('manage_users_custom_column', 'custom_show_User_Times_Balance', 10, 3);//内容
结语
文章属于KEKC博客原创,转载请说明转载于https://www.kekc.cn/
暂无评论内容