これに対する答えを見つけるのに問題があります。カスタムユーザーメタフィールドが必要です。
私はそれらを作成することができます大丈夫ですが、私はドロップダウンを作成する必要があります。
たとえば、ユーザーmetaをUnit typeにし、ドロップダウン値をResidentialおよびCommercialにするとします。
これに関するどんな助けでも素晴らしいでしょう。ありがとう。
ありがとう。コードの最初の部分でエラーが発生したので、ちょっとした微調整が1つだけです。以下は、コードの最初のブロックの作業コードです。
//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'] );
}
?>