在用户配置文件中添加exrtra用户批准状态,仅对管理员可见,并在wordpress中第一次选中复选框时发送邮件



我想将手动批准用户状态的功能交给管理员。我能够提供这个功能,但在这个功能上有一些问题。如何从用户角色的用户配置文件中隐藏此字段。即字段应仅对管理员可见。如果我使用jQuery从用户配置文件中隐藏这个文件,那么当用户点击更新配置文件按钮时,该值就会更新。我希望每个用户选择的值相同(由管理员设置(。如果从取消选中复选框到选中复选框,我还想向用户发送邮件,但目前它每次都在发送邮件。我该如何解决这个问题?

/** Add user approve field */ 
add_action( 'user_new_form', 'Add_user_fields' );
add_action( 'edit_user_profile', 'Add_user_fields' );
add_action( 'show_user_profile', 'Add_user_fields' );
function Add_user_fields( $user ) { ?>
<h2 class="user_prmission">User Permission</h3>
<table class="form-table">
<tr class="user-approve_status-wrap">
<th><label for="dropdown">Approve User Permission</label></th>
<td>
<?php 
//get dropdown saved value
$checked = (isset($user->artwork_approved) && $user->artwork_approved) ? ' checked="checked"' : ''; 
?>
<label for="artwork_approved">
<input name="artwork_approved" type="checkbox" id="artwork_approved" value="1" <?php echo $checked; ?>>
<?php _e('Approve Status','AA'); ?>
</label>
</td>
</tr>
</table>
<?php   
}
/* Update selected option **/
add_action( 'user_register', 'save_user_fields');
add_action( 'personal_options_update', 'save_user_fields' );
add_action( 'edit_user_profile_update', 'save_user_fields' );
function save_user_fields( $user_id ) {
if ( !current_user_can( 'edit_user', $user_id ) )
return false;
update_user_meta($user_id, 'artwork_approved', isset($_POST['artwork_approved']));
/* Send email to agent to notify about thier account is approved. **/ 
if (get_user_meta($user_id, 'artwork_approved', true)) {
// sent mail if checkbox is selected from unchecked to checked,and hide this filed from user profile only visible to admin.
}
}

我从您的问题中了解到,您在用户配置文件中添加了一个自定义字段,它是一个复选框。您希望该字段只能由管理员编辑,而不能由用户编辑。

如果这种理解是正确的,您可以在用户配置文件页面上呈现自定义字段时检查当前用户的用户功能。这样,如果当前用户仅具有管理员权限,则将呈现自定义字段。如果非管理员用户登录,则不会呈现自定义字段。

此外,在添加自定义字段的函数中,无论是否选中复选框,都将其值设置为"1"。我想这就是为什么每次都会发送电子邮件的原因。您应该根据您的条件设置复选框的值。

因此,添加自定义字段的函数将如下所示。

/** Add user approve field */ 
add_action( 'user_new_form', 'Add_user_fields' );
add_action( 'edit_user_profile', 'Add_user_fields' );
add_action( 'show_user_profile', 'Add_user_fields' );
function Add_user_fields( $user ) { ?>
if( !current_user_can( 'manage_options' ) ){
return;
}
<h2 class="user_prmission">User Permission</h3>
<table class="form-table">
<tr class="user-approve_status-wrap">
<th><label for="dropdown">Approve User Permission</label></th>
<td>
<?php 
//get dropdown saved value
if( isset($user->artwork_approved) && $user->artwork_approved ){
$checked = 'checked="checked"';
$value = '1';
}else{
$checked = null;
$value = null;
}
?>
<label for="artwork_approved">
<input name="artwork_approved" type="checkbox" id="artwork_approved" value="<?php echo $value; ?>" <?php echo $checked; ?>>
<?php _e('Approve Status','AA'); ?>
</label>
</td>
</tr>
</table>
<?php   
}

希望这能有所帮助。

相关内容

最新更新