У меня есть эта форма:
<tr class="user-statusz-wrap"> <th><label for="statusz"><?php _e('Státusz') ?></label></th> <td> <select type="text" name="statusz" id="statusz"> <option value disabled selected> -- válassz egyet -- </option> <option value="<?php echo esc_attr( 'Kezdő', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Kezdő</option> <option value="<?php echo esc_attr( 'Aktív', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Aktív</option> <option value="<?php echo esc_attr( 'Pártoló', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Pártoló</option> </select> </td> </tr>
Что делает этот SQL-запрос:
add_action( 'personal_options_update', 'klubadatok_vezetoseg_sql' ); add_action( 'edit_user_profile_update', 'klubadatok_vezetoseg_sql' ); function klubadatok_vezetoseg_sql( $user_id ) { if ( !current_user_can( 'edit_users', $user_id ) ) // "edit_users" means it has to be administrator or editor! return false; update_user_meta( $user_id, 'statusz', $_POST['statusz'] ); }
И есть это поле, которое указано для пользователей в профиле:
<tr class="user-statusz-wrap"> <th><label for="statusz"><?php _e('Státusz') ?></label></th> <td><p><?php echo $user->statusz . '<br />';?></p> <p class="description"><?php _e('Jelenlegi státuszod a klubban: Kezdő, Aktív, Pártoló.'); ?></p></td> </tr>
Моя проблема заключается в том, что если я сначала уберу первый вариант выбора по умолчанию, когда я его сохраню, он перезапишет SQL-данные в базе данных с пустым. 🙁
РЕШИТЬ!
<tr class="user-statusz-wrap"> <th><label for="statusz"><?php _e('Státusz') ?></label></th> <td> <select type="text" name="statusz" id="statusz"> <option value="<?php echo esc_attr( get_the_author_meta( 'statusz', $user->ID ) ); ?>"> -- válassz egyet -- </option> <option value="<?php echo esc_attr( 'Kezdő', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Kezdő</option> <option value="<?php echo esc_attr( 'Aktív', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Aktív</option> <option value="<?php echo esc_attr( 'Pártoló', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Pártoló</option> </select> <!--<input type="hidden" name="statusz" value=" -- válassz egyet -- " disabled />--> </td> </tr>
Не помечайте свой вариант как selected
если вы не хотите его выбирать, а это значит, что вы, вероятно, должны использовать selected()
чтобы динамически выбирать любое значение, которое уже было установлено. Это должно решить проблему.
Но это можно было бы очистить много:
esc_attr()
принимает единственный параметр. Вы отправляете два. selected()
Так…
$statusz = get_the_author_meta( 'statusz', $user->ID ); ?> <tr class="user-statusz-wrap"> <th><label for="statusz"><?php _e('Státusz') ?></label></th> <td> <select type="text" name="statusz" id="statusz"> <option value disabled selected> -- válassz egyet -- </option> <option value="<?php echo esc_attr('Kezdő'); ?>" <?php selected( 'Kezdő', $statusz);?> >Kezdő</option> <option value="<?php echo esc_attr('Aktív'); ?>" <?php selected( 'Aktív', $statusz);?>>Aktív</option> <option value="<?php echo esc_attr( 'Pártoló'); ?>" <?php selected( 'Pártoló', $statusz);?>>Pártoló</option> </select> </td> </tr>