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


Wordpress: Create a new usermeta field for users

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

我想为所有用户创建一个条件语句,其中包含我想要的新自定义字段的特定值。

例如,

新字段为:Approved下拉值为:是和否

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

我正在使用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创建了一个新的usermeta字段,名为"Artwork Approved"。我将其作为下拉选项,选项为"否"answers"是"。"否"选项设置为默认选项。

这创建了"Artwork Approved"usermeta字段。我管理用户帐户并选择"是"或"否"。现在有了这个新的usermeta字段,我使用的功能应该检查当前用户是否拥有值为"是"的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 } ?> 

但现在的情况是,它没有识别if语句的第一部分。如果我在艺术品获得批准的情况下登录任何帐户,则If语句只显示"其他"部分,即使我对艺术品获得批准有"是"选项。

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

感谢

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

要将字段添加到表单中,可以挂接到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)) {

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

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'])