Intereting Posts
Странное поведение get_the_ * с php 5.4 Шаблон страницы с сообщениями: как я могу изменить разметку для этого? создать страницу, которая отображает список категорий title + короткое описание? Как отобразить заголовок сообщения по идентификатору и его большому содержимому Функции bp_core не работают в API-интерфейсе buddypress json Как ограничить get_posts ()? Вызов функции-члена put_contents () для не-объекта Tax_query не работает на multisite Я хочу заменить файл мультимедиа (pdf) на обновленную версию Перенаправление проблемы: база данных WordPress Извлеките изображение из содержимого и установите его как изображение Как отключить определенное меню на странице администратора администратора Как добавить поле изображения в поля расширенного профиля BuddyPress? Функция WordPress: ограничение размера, только jpg, jpeg, ограничение загруженных файлов на аккаунт next_posts_link () всегда генерирует ссылку второй страницы в пользовательском типе сообщения

Как добавить флажок и переключатель в страницу профиля

Мне понравилось настраивать мою страницу профиля, добавляя новые поля, чтобы получить больше информации от пользователя, например «Пол» или «Говорящие языки». Мне удалось получить текстовую форму ввода для работы, проблема, с которой я сейчас столкнулся, – это радио и флажок типа ввода. Вот мой код:

function my_user_field( $user ) { ?> <h3><?php _e('More About You'); ?></h3> <table class="form-table"> <tr> <th> <label for="Dealing Type"><?php _e('Gender'); ?> </label></th> <td><span class="description"><?php _e('Gender?'); ?></span><br> <label><input type="radio" name="dealing" value="Male">Male<br /></label> <label><input type="radio" name="dealing" value="Female">Female<br /></label> </td> </tr> <tr> <th> <label for="company"><?php _e('Company'); ?> </label></th> <td> <span class="description"><?php _e('Insert Your Company name'); ?></span><br> <input type="text" name="company" id="company" value="<?php echo esc_attr( get_the_author_meta( 'company', $user->ID ) ); ?>" class="regular-text" /><br /> </td> </tr> <tr> <th> <label for="language"><?php _e('Language'); ?> </label></th> <td><input type="checkbox" name="Engilsh" value="Malay" /> English<br /> <input type="checkbox" name="language" value="Mandarin" /> Mandarin<br /> </td> </tr> </table> <?php } function my_save_custom_user_profile_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return FALSE; update_usermeta( $user_id, 'gender', $_POST['gender'] ); update_usermeta( $user_id, 'company', $_POST['company'] ); update_usermeta( $user_id, 'language', $_POST['language'] ); } add_action( 'show_user_profile', 'my_user_field' ); add_action( 'edit_user_profile', 'my_user_field' ); add_action( 'personal_options_update', 'my_save_custom_user_profile_fields' ); add_action( 'edit_user_profile_update', 'my_save_custom_user_profile_fields' ); 

«Пол» и «Языки» не проходят через $ _post []. Я новичок в кодировании, надеюсь, что вы, ребята, можете помочь.

Solutions Collecting From Web of "Как добавить флажок и переключатель в страницу профиля"

Вам не хватает «проверенного» значения для входов

 <input type="checkbox" name="language" <?php if (get_the_author_meta( 'language', $user->ID) == 'Mandarin' ) { ?>checked="checked"<?php }?> value="Mandarin" /> Mandarin<br /> 

Кроме того, usermeta имеет дело, но вы проверяете $_POST['gender']

Наконец, у вас должен быть один usermeta для английского и другого для мандарина, поскольку они не являются взаимно экслюзивными

[edit: рабочий код] [edit2: несколько языков]

 <?php $lingo = array('en' => 'English', 'md' => '普通話', 'es' => 'Español', 'fr' => 'Français', 'pt' => 'Português'); function my_user_field( $user ) { $gender = get_the_author_meta( 'dealing', $user->ID); $company = esc_attr( get_the_author_meta( 'company', $user->ID ) ); ?> <h3><?php _e('More About You'); ?></h3> <table class="form-table"> <tr> <th> <label for="Dealing Type"><?php _e('Gender'); ?> </label></th> <td><span class="description"><?php _e('Gender?'); ?></span><br> <label><input type="radio" name="dealing" <?php if ($gender == 'Male' ) { ?>checked="checked"<?php }?> value="Male">Male<br /></label> <label><input type="radio" name="dealing" <?php if ($gender == 'Female' ) { ?>checked="checked"<?php }?> value="Female">Female<br /></label> </td> </tr> <tr> <th> <label for="company"><?php _e('Company'); ?> </label></th> <td> <span class="description"><?php _e('Insert Your Company name'); ?></span><br> <input type="text" name="company" id="company" value="<?php echo $company; ?>" class="regular-text" /><br /> </td> </tr> <tr> <th> <?php _e('Language'); ?> </th> <td><?php global $lingo; foreach($lingo as $key => $value) { $code = 'language_'.$key; $lang = get_the_author_meta( $code, $user->ID); ?> <label><input type="checkbox" name="<?php echo $code; ?>" <?php if ($lang == 'yes' ) { ?>checked="checked"<?php }?> value="yes" /> <?php echo $value; ?></label><br /> <?php } ?> </td> </tr> </table> <?php } function my_save_custom_user_profile_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return FALSE; update_usermeta( $user_id, 'dealing', $_POST['dealing'] ); update_usermeta( $user_id, 'company', $_POST['company'] ); global $lingo; foreach($lingo as $key => $value) { $code = "language_".$key; update_usermeta( $user_id, $code, $_POST[$code] ); } } add_action( 'show_user_profile', 'my_user_field' ); add_action( 'edit_user_profile', 'my_user_field' ); add_action( 'personal_options_update', 'my_save_custom_user_profile_fields' ); add_action( 'edit_user_profile_update', 'my_save_custom_user_profile_fields' );