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

时间:2011-05-26 15:59:10

标签: 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!';
}

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

*的更新:

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

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

以下是我使用新用户名字段的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 } ?> 

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

我不知道为什么它没有像我在声明中所说的那样认可Yes选项。

谢谢

2 个答案:

答案 0 :(得分: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 
}

然后,您需要加入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']));
}

您的情况如下:

if (get_user_meta($current_user->ID, 'artwork_approved', true)) {

答案 1 :(得分:1)

不应该读取第二个代码块:

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', $_POST['artwork_approved']);
}

update_user_meta保存的值为$_POST['artwork_approved']而不是isset($_POST['artwork_approved'])