%d ',
$user_id,
$user_id,
esc_attr__( 'Copy ID', 'user-id' )
);
}
return $val;
}
/**
* Make User ID column sortable.
*
* @param array $columns Sortable columns.
* @return array
*/
public function make_user_id_column_sortable( $columns ) {
$columns['user_id'] = 'ID';
return $columns;
}
/**
* Handle sorting behavior for User ID.
*
* @param WP_User_Query $query The current user query object.
*/
public function handle_user_id_column_sorting( $query ) {
if ( ! is_admin() || ! function_exists( 'get_current_screen' ) ) {
return;
}
$screen = get_current_screen();
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( $screen && 'users' === $screen->id && isset( $_GET['orderby'] ) && 'ID' === $_GET['orderby'] ) {
$query->set( 'orderby', 'ID' );
}
}
/**
* Display User ID on profile edit pages.
*
* @param WP_User $user The WP_User object.
*/
public function display_user_id_on_profile( $user ) {
?>
esc_html__( 'Copied!', 'user-id' )
) );
}
/**
* Add Settings page.
*/
public function add_settings_page() {
add_options_page(
esc_html__( 'User ID Settings', 'user-id' ),
esc_html__( 'User ID', 'user-id' ),
'manage_options',
'user-id-settings',
array( $this, 'render_settings_page' )
);
}
/**
* Register plugin settings.
*/
public function register_settings() {
register_setting( 'user_id_options_group', 'user_id_support_mode', array(
'type' => 'boolean',
'sanitize_callback' => 'absint',
'default' => 0,
) );
add_settings_section(
'user_id_main_section',
esc_html__( 'Main Settings', 'user-id' ),
null,
'user-id-settings'
);
add_settings_field(
'user_id_support_mode',
esc_html__( 'Enable Support Mode', 'user-id' ),
array( $this, 'render_support_mode_field' ),
'user-id-settings',
'user_id_main_section'
);
}
/**
* Render Support Mode field.
*/
public function render_support_mode_field() {
$value = get_option( 'user_id_support_mode', 0 );
?>
ID );
$edit_url = get_edit_user_link( $current_user->ID );
// If we are looking at a specific user in the admin, use that user instead
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( is_admin() && isset( $_GET['user_id'] ) ) {
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
$viewed_user_id = intval( $_GET['user_id'] );
$user_obj = get_userdata( $viewed_user_id );
if ( $user_obj ) {
$current_user = $user_obj;
$debug_url = admin_url( 'tools.php?page=user-id-debug&user_id=' . $current_user->ID );
$edit_url = get_edit_user_link( $current_user->ID );
}
}
$wp_admin_bar->add_node( array(
'id' => 'user-id-support',
'title' => '' . esc_html__( 'User Debug', 'user-id' ) . '',
'href' => $debug_url,
'meta' => array(
'class' => 'user-id-support-menu',
),
) );
$wp_admin_bar->add_node( array(
'id' => 'user-id-support-id',
'parent' => 'user-id-support',
/* translators: %d: User ID */
'title' => sprintf( esc_html__( 'User ID: %d', 'user-id' ), $current_user->ID ),
) );
$roles = implode( ', ', $current_user->roles );
$wp_admin_bar->add_node( array(
'id' => 'user-id-support-role',
'parent' => 'user-id-support',
/* translators: %s: User Roles */
'title' => sprintf( esc_html__( 'Role(s): %s', 'user-id' ), $roles ?: 'None' ),
) );
$wp_admin_bar->add_node( array(
'id' => 'user-id-support-debug',
'parent' => 'user-id-support',
'title' => esc_html__( 'User Debug Page', 'user-id' ),
'href' => $debug_url,
) );
$wp_admin_bar->add_node( array(
'id' => 'user-id-support-edit',
'parent' => 'user-id-support',
'title' => esc_html__( 'Edit User', 'user-id' ),
'href' => $edit_url,
) );
}
}
new User_ID_Admin();