usermeta; } public function get_entity_id_column(): string { return 'user_id'; } public function get_primary_table(): string { global $wpdb; return $wpdb->users; } public function get_primary_id_column(): string { return 'ID'; } public function get_cache_group(): string { return 'wpdo_user_profile'; } public function get_delete_hook(): string { return 'delete_user'; } public function extend_native_query( $query_object ): void { if ( ! ( $query_object instanceof WP_User_Query ) ) { return; } $wpdo_query = $query_object->get( 'wpdo_meta_query' ); if ( empty( $wpdo_query ) || ! is_array( $wpdo_query ) ) { return; } TMDO_Query_Compiler::inject_into_user_query( $query_object, $wpdo_query ); } public function get_entity_ids_after( int $after_id, int $limit ): array { global $wpdb; return array_map( 'intval', $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM `{$wpdb->users}` WHERE ID > %d ORDER BY ID ASC LIMIT %d", $after_id, $limit ) ) ?: array() ); } } // 註冊 pre_user_query(unit test 下 add_action 未載入時跳過) if ( function_exists( 'add_action' ) ) { add_action( 'pre_user_query', function ( $query ) { $adapter = TMDO_Entity_Registry::get_adapter( 'user' ); if ( $adapter ) { $adapter->extend_native_query( $query ); } }, 10, 1 ); }