functions.php
子テーマにユーザーメタを追加しても問題はありませんが、このデータを "rivenditore"という特定のユーザーロールを持つユーザープロファイル内にのみ表示する必要があります。別のテーブルを表示する
以下は試したコードです。
add_action( 'show_user_profile', 'stel_extra_field_meta' );
add_action( 'edit_user_profile', 'stel_extra_field_meta' );
function stel_extra_field_meta( $user ) {
?>
<h3>STEL Dati Rivenditore</h3>
<table class="form-table">
<tr>
<th><label for="location">Location</label></th>
<td><input type="text" name="location" value="<?php echo esc_attr(get_the_author_meta( 'location', $user->ID )); ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="regione">Regione</label></th>
<td><input type="text" name="regione" value="<?php echo esc_attr(get_the_author_meta( 'regione', $user->ID )); ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="tipo_rivenditore">Tipo di Rivenditore</label></th>
<td><input type="text" name="tipo_rivenditore" value="<?php echo esc_attr(get_the_author_meta( 'tipo_rivenditore', $user->ID )); ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="service_type">Servizio Scelto</label></th>
<?php $value = esc_attr(get_the_author_meta( 'service_type', $user->ID )); $service_type = preg_replace('/\|.*/', '', $value); ?>
<td><input type="text" name="service_type" value="<?php echo $service_type; ?>" class="regular-text" /></td>
</tr>
<tr>
<th><label for="phone">Phone</label></th>
<td><input type="text" name="phone" value="<?php echo esc_attr(get_the_author_meta( 'phone', $user->ID )); ?>" class="regular-text" /></td>
</tr>
</table>
<?php
};
get_the_author_meta( $field, $userID );
update_user_meta( $user_id, $meta_key, $meta_value, $prev_value );
add_action( 'personal_options_update', 'stel_save_extra_field_meta' );
add_action( 'edit_user_profile_update', 'stel_save_extra_field_meta' );
function stel_save_extra_field_meta( $user_id )
{
update_user_meta( $user_id,'location', $_POST['location'] );
update_user_meta( $user_id,'service_type', $_POST['service_type'] );
update_user_meta( $user_id,'phone', $_POST['phone'] );
update_user_meta( $user_id,'regione', $_POST['regione'] );
update_user_meta( $user_id,'tipo_rivenditore', $_POST['tipo_rivenditore'] );
}
author.php
ファイルで、 get_user_meta() を介してユーザーメタデータを取得してから、$user->roles == 'rivenditore'
の if ステートメントを実行します。必要に応じてメタデータを表示してから、他のロールのユーザーに表示したい内容でelseif $user->roles == 'installatori'
ステートメントを実行します。
編集:要求どおりのコード例:
// get author data
$queried_object = get_queried_object();
// set author ID
$author_id = $queried_object->ID;
// get author roles in array
$roles_arr = $queried_object->roles;
// get the meta data, I set it to 'location' just to show you how it works
$user_meta_location = get_user_meta($author_id, 'location', TRUE);
if ($roles_arr[0] == 'rivenditore') {
// do stuff for rivenditore users
echo $user_meta_location;
} elseif ($roles_arr[0] == 'installatori') {
// do other stuff for installatori users
echo $user_meta_location;
}
まだテストしていませんが、うまくいくはずです。あなたのmeta_dataのキーが何なのかわからないので、設定してください。私はコメントを追加したので、すべては確実に読めるはずです。がんばろう!