Wordpress: Создайте новое поле usermeta для пользователей


Как создать новое поле 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!';
}

Похоже, для этого нет плагина, и мне действительно нужна эта функция. Я был бы очень признателен за несколько советов по созданию новой пользовательской таблицы с раскрывающимися опциями.

* ОБНОВЛЕНИЕ:

Я использовал Register Plus Redux для создания нового поля usermeta, называемого "Одобренное художественное произведение". Я сделал это выпадающим списком с вариантами "Нет" и "Да". Параметр "Нет" установлен по умолчанию.

Это создало поле "Одобренное художественное произведение" для пользователя. Я управляю учетными записями пользователей и выбираю "Да" или "Нет". Теперь с этим новым полем usermeta я использую функцию, которая должна проверять, одобрено ли у текущего пользователя художественное произведение со значением "Да". Затем предполагается показать определенный код.

Вот оператор if, который я использую с новым полем usermeta:

<?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. Если я войду в любую учетную запись с утвержденным произведением искусства, в заявлении "если" отображается только часть "еще", даже если у меня есть опция "Да" для утвержденного произведения искусства.

Я не знаю, почему он не распознает вариант "Да", как у меня есть в заявлении.

Спасибо

Author: Richard M, 2011-05-26

2 answers

Вы можете создать простой плагин для подключения к действиям профиля пользователя и добавить новое поле.

Чтобы добавить поле в форму, вы можете подключиться к действиям show_user_profile и edit_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_update и edit_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)) {
 16
Author: Richard M, 2011-05-28 15:30:47

Разве второй блок кода не должен гласить:

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

 1
Author: Divot, 2012-09-28 12:56:59