Jaime
Creé un formulario especial dentro de mi sitio que permite a mis usuarios ingresar una clave. estoy usando add_user_meta()
para agregar los metadatos a la base de datos. Quiero poder ver esta clave cuando hago clic en usuarios en el centro de administración.
¿Cómo haría para agregar a esta columna?
A continuación se muestra la información de metadatos que estoy usando
add_user_meta($userId,'code','12345');
Solo queremos poder agregarlo a la vista en users.php en la tabla que muestra el correo electrónico y el rol del nombre de usuario.
He usado un código como este para mostrar la identificación del usuario, pero no puedo encontrar la manera de mostrar su meta.
add_filter('manage_users_columns', 'pippin_add_user_id_column');
function pippin_add_user_id_column($columns) {
$columns['user_id'] = 'User ID';
return $columns;
}
add_action('manage_users_custom_column', 'pippin_show_user_id_column_content', 10, 3);
function pippin_show_user_id_column_content($value, $column_name, $user_id) {
$user = get_userdata( $user_id );
if ( 'user_id' == $column_name )
return $user_id;
return $value;
}
Este ejemplo fue creado con la ayuda de estas dos páginas del códice de WordPress.
https://codex.wordpress.org/Plugin_API/Action_Reference/edit_user_profile
https://codex.wordpress.org/Plugin_API/Action_Reference/personal_options_update
Es para mostrar y actualizar los metadatos de usuario personalizados.
<?php
// Hooks near the bottom of profile page (if current user)
add_action('show_user_profile', 'custom_user_profile_fields');
// Hooks near the bottom of the profile page (if not current user)
add_action('edit_user_profile', 'custom_user_profile_fields');
// @param WP_User $user
function custom_user_profile_fields( $user ) {
?>
<table class="form-table">
<tr>
<th>
<label for="code"><?php _e( 'Custom Meta' ); ?></label>
</th>
<td>
<input type="text" name="code" id="code" value="<?php echo esc_attr( get_the_author_meta( 'code', $user->ID ) ); ?>" class="regular-text" />
</td>
</tr>
</table>
<?php
}
// Hook is used to save custom fields that have been added to the WordPress profile page (if current user)
add_action( 'personal_options_update', 'update_extra_profile_fields' );
// Hook is used to save custom fields that have been added to the WordPress profile page (if not current user)
add_action( 'edit_user_profile_update', 'update_extra_profile_fields' );
function update_extra_profile_fields( $user_id ) {
if ( current_user_can( 'edit_user', $user_id ) )
update_user_meta( $user_id, 'code', $_POST['code'] );
}
?>
-
Estaba buscando agregar el campo a users.php donde muestra el nombre de usuario, el correo electrónico y los roles. No queremos la posibilidad de editarlo.
– Jaime
28 de mayo de 2015 a las 0:58
-
Entonces, solo use la primera parte del código para mostrarlo y cambie el elemento de entrada a algo no editable.
– Daniel
28 de mayo de 2015 a las 1:02
-
No quiero mostrarlo en user.php. Quiero mostrarlo en users.php. Esta sería la página que muestra todos los nombres de usuario, correos electrónicos y roles en una tabla.
– Jaime
28 de mayo de 2015 a las 1:15
La respuesta anterior de Mordred funcionó para mí después de cambiar el segundo Añadir filtro a añadir_acción. Aquí está el código modificado:
function yoursite_manage_users_columns( $columns ) {
// $columns is a key/value array of column slugs and names
$columns[ 'custom_field' ] = 'Subscription';
return $columns;
}
add_filter( 'manage_users_columns', 'yoursite_manage_users_columns', 10, 1 );
function yoursite_manage_users_custom_column( $output, $column_key, $user_id ) {
switch ( $column_key ) {
case 'custom_field':
$value = get_user_meta( $user_id, 'custom_field', true );
return $value;
break;
default: break;
}
// if no column slug found, return default output value
return $output;
}
add_action( 'manage_users_custom_column', 'yoursite_manage_users_custom_column', 10, 3 );
Para agregar campos user_meta personalizados a users.php, debe hacer lo siguiente:
function yoursite_manage_users_columns( $columns ) {
// $columns is a key/value array of column slugs and names
$columns[ 'custom_field' ] = 'Subscription';
return $columns;
}
add_filter( 'manage_users_columns', 'yoursite_manage_users_columns', 10, 1 );
function yoursite_manage_users_custom_column( $output, $column_key, $user_id ) {
switch ( $column_key ) {
case 'custom_field':
$value = get_user_meta( $user_id, 'custom_field', true );
return $value;
break;
default: break;
}
// if no column slug found, return default output value
return $output;
}
add_filter( 'manage_users_custom_column', 'yoursite_manage_users_custom_column', 10, 3 );
Darme cuenta de que esto es un hilo un poco antiguo, sin embargo, estaba atrapado en un problema muy similar y pensé en compartir lo que encontré, que resultó ser una solución muy simple.
<?php
add_filter('manage_users_columns', 'pippin_add_user_id_column');
function pippin_add_user_id_column($columns) {
$columns['user_id'] = 'User ID';
return $columns;
}
add_action('manage_users_custom_column', 'pippin_show_user_id_column_content', 10, 3);
function pippin_show_user_id_column_content($value, $column_name, $user_id) {
$user = get_userdata( $user_id );
if ( 'user_id' == $column_name )
return $user_id;
return $value;
}
?>
Crédito: https://pippinsplugins.com/añadir-columna-de-id-de-usuario-a-la-tabla-de-usuarios-de-wordpress/