For Wordpress 4.9: As I cant comment (new user). The final soultion (single WP install) I use for making `is_user_logged_in()` and `current_user_can()` work, is as follow below. We `require('wp-load.php')` **first** *(to skip wp() in load-blog-header.php)*, and get `ABSPATH` constant then, manually includes **exactly** all the stuff needed.

Using `define('SHORTINIT', true)` + `require('wp-load.php')` + manually includes:

Pageload: **1.05 sek** - included files: **43 files**

Comparing: Using **ONLY** `require('wp-load.php')`:

Pageload: **1.35 sek** - included files: **419 files**

The time difference (0.3 sek) might differ from installs and PHP engines, but while validating many requests on one pageload -things adds up!

Remember to use relative call to WP installed dir. From a Wordpress custom plugin dir, inside one subdir level, normal install, a path should be like:

    $wordpress = '../../../../wp-load.php';

Then:

    define('SHORTINIT', true);
    include_once $wordpress;
    
    require_once ( ABSPATH . WPINC . '/class-wp-user.php' );
    require_once ( ABSPATH . WPINC . '/class-wp-roles.php' );
    require_once ( ABSPATH . WPINC . '/class-wp-role.php' );
    require_once ( ABSPATH . WPINC . '/class-wp-session-tokens.php' );
    require_once ( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' );
    require_once ( ABSPATH . WPINC . '/formatting.php' );
    require_once ( ABSPATH . WPINC . '/capabilities.php' );
    //require_once ( ABSPATH . WPINC . '/query.php' ); // - might be useful
    require_once ( ABSPATH . WPINC . '/user.php' );
    require_once ( ABSPATH . WPINC . '/meta.php' );
    
    wp_cookie_constants();
    
    require_once ( ABSPATH . WPINC . '/vars.php' );
    require_once ( ABSPATH . WPINC . '/kses.php' );
    require_once ( ABSPATH . WPINC . '/rest-api.php' );
    require_once ( ABSPATH . WPINC . '/pluggable.php' );

After this, user validation is accessable. For other task, r*unning on one or two requests*, tracking down other needed files might not be not worth 0.3 sek. Skip the `SHORTINIT` constant and manually clutter.