Из вашего вопроса я понимаю, что вы добавили в профиль пользователя специальное поле, которое является флажком. Вы хотите, чтобы это поле редактировалось только администраторами, а не пользователями.
Если это понимание верно, вы можете проверить пользовательские возможности текущего пользователя при отображении настраиваемого поля на странице профиля пользователя.
Таким образом, если текущий пользователь имеет права администратора только тогда, настраиваемое поле будет обработано. Если пользователь не является администратором, пользовательское поле не будет отображено.
Кроме того, в вашей функции добавления настраиваемого поля вы устанавливаете значение флажка на «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
}
Надеюсь, это поможет.