Wordpress:为用户创建一个新的usermeta字段

gdi*_*ari 6 php wordpress conditional-statements

如何使用下拉选择值创建新的usermeta字段?

我想为具有我想要的新自定义字段的特定值的所有用户创建条件语句.

例如,

新字段为:已批准下拉值为:是和否

条件语句将识别"已批准"字段值为"是"的所有用户.然后它会发布一个代码.

我正在使用wp_get_current_user函数(),它完全符合我的需要,但我只需要一个新的自定义usermeta字段.在示例中,新的usermeta字段将是"artwork_approved".

例:

wp_get_current_user();
if ($current_user->artwork_approved == 'Yes'){
    echo 'Thank you for approving your artwork!';
}
Run Code Online (Sandbox Code Playgroud)

似乎没有插件,我真的需要这个功能.我真的很感激有关使用下拉选项创建新usermeta的一些建议.

*更新:

我使用Register Plus Redux创建了一个名为"Artwork Approved"的新usermeta字段.我做了一个下拉选项,选项"否"和"是"."否"选项设置为默认值.

这创建了"Artwork Approved"usermeta字段.我管理用户帐户并选择是或否现在使用这个新的usermeta字段,我使用的函数应该检查当前用户是否具有值为Yes的Artwork Approved.然后它应该显示一定的代码.

这是我使用新的usermeta字段的if语句:

<?php global $current_user; get_currentuserinfo(); if ($current_user->artwork_approved == 'Yes') { ?>

echo 'Your artwork is approved';

<?php } else { ?>         

echo 'Your artwork is not approved';

<?php } ?> 
Run Code Online (Sandbox Code Playgroud)

但正在发生的是它没有认识到if语句的第一部分.如果我使用已批准的图稿登录任何帐户,即使我对"已批准的图稿"选项"是",if语句也只显示"其他"部分.

我不知道为什么它没有在声明中承认是的选择.

谢谢

Ric*_*d M 16

您可以创建一个简单的插件来挂钩用户配置文件操作并添加一个新字段.

要将字段添加到表单,您可以挂钩show_user_profileedit_user_profile操作并输出表单字段HTML.下面使用复选框而不是下拉列表.

add_action('show_user_profile', 'my_user_profile_edit_action');
add_action('edit_user_profile', 'my_user_profile_edit_action');
function my_user_profile_edit_action($user) {
  $checked = (isset($user->artwork_approved) && $user->artwork_approved) ? ' checked="checked"' : '';
?>
  <h3>Other</h3>
  <label for="artwork_approved">
    <input name="artwork_approved" type="checkbox" id="artwork_approved" value="1"<?php echo $checked; ?>>
    Artwork approved
  </label>
<?php 
}
Run Code Online (Sandbox Code Playgroud)

然后你需要挂钩personal_options_updateedit_user_profile_update动作,获取你的字段的值并将其保存为用户元.

add_action('personal_options_update', 'my_user_profile_update_action');
add_action('edit_user_profile_update', 'my_user_profile_update_action');
function my_user_profile_update_action($user_id) {
  update_user_meta($user_id, 'artwork_approved', isset($_POST['artwork_approved']));
}
Run Code Online (Sandbox Code Playgroud)

您的情况如下.

if (get_user_meta($current_user->ID, 'artwork_approved', true)) {
Run Code Online (Sandbox Code Playgroud)