Выпадающий список на странице профиля пользователя

У меня возникают проблемы с поиском ответа на этот вопрос. Мне нужно иметь пользовательское мета-поле.

Я могу создать их, что хорошо, но мне нужно создать drop down.

Например, я хочу, чтобы пользовательский мета был типом Unit, а выпадающие значения были живыми и коммерческими

Любая помощь в этом была бы замечательной. Благодарю.

Solutions Collecting From Web of "Выпадающий список на странице профиля пользователя"

Спасибо за это. Только одна небольшая настройка, так как первый бит кода породил ошибку. Ниже приведен рабочий код для первого блока кода.

//hooks add_action( 'show_user_profile', 'Add_user_fields' ); add_action( 'edit_user_profile', 'Add_user_fields' ); function Add_user_fields( $user ) { ?> <h3>Extra fields</h3> <table class="form-table"> <tr> <th><label for="text">text</label></th> <td> <?php // get test saved value $saved = esc_attr( get_the_author_meta( 'user_text', $user->ID ) ); ?> <input type="text" name="user_text" id="user_text" value="<?php echo $saved; ?>" class="regular-text" /><br /> <span class="description">Simple text field</span> </td> </tr> <tr> <th><label for="dropdown">dropdown Select field</label></th> <td> <?php //get dropdown saved value $selected = get_the_author_meta( 'user_select', $user->ID ); //there was an extra ) here that was not needed ?> <select name="user_select" id="user_select"> <option value="value1" <?php echo ($selected == "value1")? 'selected="selected"' : '' ?>>Value One label</option> <option value="value2" <?php echo ($selected == "value2")? 'selected="selected"' : '' ?>>Value Two label</option> </select> <span class="description">Simple text field</span> </td> </tr> </table> 

Вторая часть в порядке.

 add_action( 'personal_options_update', 'save_user_fields' ); add_action( 'edit_user_profile_update', 'save_user_fields' ); function save_user_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return false; //save text field update_usermeta( $user_id, 'user_text', $_POST['user_text'] ); //save dropdown update_usermeta( $user_id, 'user_select', $_POST['user_select'] ); } 

Еще раз, если вы знаете, как добавить текстовое поле, вы знаете, как добавить любое другое поле формы, например:

показывая поля:

 //hooks add_action( 'show_user_profile', 'Add_user_fields' ); add_action( 'edit_user_profile', 'Add_user_fields' ); function Add_user_fields( $user ) { ?> <h3>Extra fields</h3> <table class="form-table"> <tr> <th><label for="text">text</label></th> <td> <?php // get test saved value $saved = esc_attr( get_the_author_meta( 'user_text', $user->ID ) ); ?> <input type="text" name="user_text" id="user_text" value="<?php echo $saved; ?>" class="regular-text" /><br /> <span class="description">Simple text field</span> </td> </tr> <tr> <th><label for="dropdown">dropdown Select field</label></th> <td> <?php //get dropdown saved value $selected = get_the_author_meta( 'user_select', $user->ID ) ); ?> <select name="user_select" id="user_select"> <option value="value1" <?php echo ($selected == "value1")? 'selected="selected"' : '' ?>>Value One label</option> <option value="value2" <?php echo ($selected == "value2")? 'selected="selected"' : '' ?>>Value Two label</option> <span class="description">Simple text field</span> </td> </tr> </table> <?php } 

Сохранение полей

// крюки

 add_action( 'personal_options_update', 'save_user_fields' ); add_action( 'edit_user_profile_update', 'save_user_fields' ); function save_user_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ) return false; //save text field update_usermeta( $user_id, 'user_text', $_POST['user_text'] ); //save dropdown update_usermeta( $user_id, 'user_select', $_POST['user_select'] ); } 

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

Добавьте его в function.php вашей темы.

 add_action( 'show_user_profile', 'Add_user_fields' ); add_action( 'edit_user_profile', 'Add_user_fields' ); function Add_user_fields( $user ) { ?> <table class="form-table"> <tr> <th><label for="dropdown">Activate/Deactivate User</label></th> <td> <?php //get dropdown saved value $selected = get_the_author_meta('pmpro_email_confirmation_key', $user->ID); //there was an extra ) here that was not needed ?> <select name="user_select" id="user_select"> <option value="validated" <?php echo ($selected == "validated")? 'selected="selected"' : '' ?>>Activate</option> <option value="notvalidated" <?php echo ($selected == "notvalidated")? 'selected="selected"' : '' ?>>De-Activate</option> </select> </td> </tr> </table> <?php } add_action( 'personal_options_update', 'save_user_fields' ); add_action( 'edit_user_profile_update', 'save_user_fields' ); function save_user_fields( $user_id ) { if ( !current_user_can( 'edit_user', $user_id ) ){ return false; } //save dropdown update_usermeta( $user_id, 'pmpro_email_confirmation_key', $_POST['user_select'] ); } ?>