Как создать новое поле usermeta с выпадающими значениями выбора?
Я хочу создать условный оператор для всех пользователей с определенным значением нового настраиваемого поля, которое я хочу.
Например,
Новое поле будет: Утверждено. Выпадающие значения: Да и Нет
Условный оператор распознает всех пользователей с полем «Утвержденное поле» «Да». Затем он отправит код.
Im работает с функцией 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» с надписью «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 покажет только часть «else», даже если у меня есть опция «Да» для одобренного произведения.
Я не знаю, почему он не распознает параметр «Да», как я это делаю в заявлении.
благодаря
Вы можете создать простой плагин, чтобы подключиться к действиям пользовательского профиля и добавить новое поле.
Чтобы добавить поле в форму, вы можете подключиться к действиям 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)) {
Не следует ли читать второй блок кода:
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']
not isset($_POST['artwork_approved'])
.