Редактирование пользовательских метаданных пользователя в панели управления wordpress
Я хотел бы добавить некоторые настраиваемые метаданные для пользователей в панель управления WordPress. Метаданные будут уникальным ключом, в основном строкой случайных символов. Я бы хотел (как администратор) нажать кнопку, которая находится на странице профиля пользователя, и сгенерировать или восстановить уникальный ключ. Я не уверен, как добавить код кнопки и как связать его с некоторым php-кодом, который создаст уникальный ключ. Я начинаю с кода ниже, который из взятhttps://gist.github.com/magnific0/29c32c7dabc89ab9cae5 с некоторыми незначительными изменениями. Этот код может добавить настраиваемое поле метаданных для пользователя, теперь я просто хотел бы иметь возможность сгенерировать новый уникальный ключ одним нажатием кнопки.
<?php
function mysite_custom_define() {
$custom_meta_fields = array();
$custom_meta_fields['uniqueKey'] = 'Unique Key';
return $custom_meta_fields;
}
function mysite_columns($defaults) {
$meta_number = 0;
$custom_meta_fields = mysite_custom_define();
foreach ($custom_meta_fields as $meta_field_name => $meta_disp_name) {
$meta_number++;
$defaults[('mysite-usercolumn-' . $meta_number . '')] = __($meta_disp_name, 'user-column');
}
return $defaults;
}
function mysite_custom_columns($value, $column_name, $id) {
$meta_number = 0;
$custom_meta_fields = mysite_custom_define();
foreach ($custom_meta_fields as $meta_field_name => $meta_disp_name) {
$meta_number++;
if( $column_name == ('mysite-usercolumn-' . $meta_number . '') ) {
return get_the_author_meta($meta_field_name, $id );
}
}
}
function mysite_show_extra_profile_fields($user) {
print('<h3>Extra profile information</h3>');
print('<table class="form-table">');
$meta_number = 0;
$custom_meta_fields = mysite_custom_define();
foreach ($custom_meta_fields as $meta_field_name => $meta_disp_name) {
$meta_number++;
print('<tr>');
print('<th><label for="' . $meta_field_name . '">' . $meta_disp_name . '</label></th>');
print('<td>');
print('<input type="text" name="' . $meta_field_name . '" id="' . $meta_field_name . '" value="' . esc_attr( get_the_author_meta($meta_field_name, $user->ID ) ) . '" class="regular-text" /><br />');
print('<span class="description"></span>');
print('</td>');
print('</tr>');
}
print('</table>');
}
function mysite_save_extra_profile_fields($user_id) {
if (!current_user_can('edit_user', $user_id))
return false;
$meta_number = 0;
$custom_meta_fields = mysite_custom_define();
foreach ($custom_meta_fields as $meta_field_name => $meta_disp_name) {
$meta_number++;
update_user_meta( $user_id, $meta_field_name, $_POST[$meta_field_name] );
}
}
add_action('show_user_profile', 'mysite_show_extra_profile_fields');
add_action('edit_user_profile', 'mysite_show_extra_profile_fields');
add_action('personal_options_update', 'mysite_save_extra_profile_fields');
add_action('edit_user_profile_update', 'mysite_save_extra_profile_fields');
add_action('manage_users_custom_column', 'mysite_custom_columns', 15, 3);
add_filter('manage_users_columns', 'mysite_columns', 15, 1);
?>