Wordpress: создайте новое поле usermeta для пользователей - PullRequest
6 голосов
/ 26 мая 2011

Как создать новое поле usermeta с раскрывающимися значениями выбора?

Я хочу создать условный оператор для всех пользователей с определенным значением нового настраиваемого поля, которое я хочу.

Например,

Новое поле будет: Одобрено. Значения раскрывающегося списка: Да и Нет

Условный оператор распознает всех пользователей со значением поля Утверждено, равным Да.Затем он отправит код.

Я работаю с функцией wp_get_current_user (), которая делает именно то, что мне нужно, но мне просто нужно новое пользовательское поле пользователя.В этом примере новое поле usermeta будет «artwork_approved».

Пример:

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

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

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

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

Это создало поле пользователя "Artwork Approved".Я управляю учетными записями пользователей и выбираю «Да» или «Нет». Теперь с этим новым полем 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заявление.Если я захожу в какой-либо аккаунт с утвержденной иллюстрацией, в операторе if отображается только часть «еще», даже если у меня есть опция «Да» для утвержденной иллюстрации.

Я не знаю, почему это не такпризнавая вариант «Да» в том виде, в котором он указан в заявлении.

Спасибо

Ответы [ 2 ]

16 голосов
/ 27 мая 2011

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

Чтобы добавить поле в форму, вы можете подключиться к действиям и выводам 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)) {
1 голос
/ 28 сентября 2012

Не должен читаться второй блок кода:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...