Favorite WP-CLI Packages: Login Command

This is the first post in a series on WP-CLI Packages. Most work days for me involve working on WordPress sites, which in-turn means that I’m regularly interacting with WP installs via WP-CLI.

💻 wp is the 4th most used command in my history, and wp login is one of my most frequently used commands.

Passwordless logins for WordPress

wp-cli-login-command is a package by Evan Mattson that creates passwordless links for your WordPress sites.

I’ve been adding the login command WP-CLI package on every site that I’ve touched since the beginning of last year. If you’re a Trellis user, you can define wp_cli_packages in main.yml to have them installed on your sites:

wp_cli_packages:
  - aaemnnosttv/wp-cli-login-command

Make sure to also add the companion WordPress plugin to your Bedrock/Composer based WordPress site:

composer require aaemnnosttv/wp-cli-login-server

I also install the package on my host machine for when I’m working on Valet sites:

wp package install aaemnnosttv/wp-cli-login-command

After installing the WP-CLI Login Command package and activating the companion WordPress plugin, we can start diving into wp login:

usage: wp login create <user-locator> [--expires=<seconds-from-now>] [--url-only] [--launch]
   or: wp login email <user-locator> [--expires=<seconds-from-now>] [--template=<path-to-template-file>]
   or: wp login install [--activate] [--yes]
   or: wp login invalidate
   or: wp login toggle [<on|off>]

The simplest usage:

$ wp login create admin
Success: Magic login link created!
------------------------------------------------------------
https://bedrock.test/26bf1c0a/c559d1c106-17a1dce668-69ac59ee
------------------------------------------------------------
This link will self-destruct in 15 mins, or as soon as it is used; whichever comes first.

Following the link will bring you directly to the WordPress admin dashboard for the user you defined ✨.

In conjunction with WP-CLI aliases, the login command is even more powerful by allowing you to quickly login to any environment of a WordPress site.

Right now I’m switching between several projects that I consistently login to via wp login. Being able to define the environment means that I never have to leave my host terminal to get into a site:

$ cd ~/Sites/cookiebutter.com/site
$ wp @staging login create traderjoes
Success: Magic login link created!
-------------------------------------------------------------------------
https://cookiebutter.stagingsite.link/04ed8272/ba6bec0b85-5fc03dc3-c1831b7c84
-------------------------------------------------------------------------
This link will self-destruct in 15 mins, or as soon as it is used; whichever comes first.

A year ago I started heading down the path of integrating BotMan and the WP-CLI login command together in order to get passwordless links via Slack:

WP-CLI login command bot

There’s a lot of potential with this command and all of the ways you could go about implementing it. Evan’s plans for v2 include:

  • Move all core functionality to the server plugin (no interface). This should make things a bit simpler implementation-wise and the CLI will be more of a "client" for using the plugin. This will also allow for programmatic creation of logins via your own plugin 🎉
  • Move magic login data to a custom table to allow for some new features that aren’t possible with the current transient-based persistence.
  • Probably rewrite a bunch of stuff.
  • GitHub Updater?
  • Punch & pie.

Keep in mind that user passwords are still in place with this command and plugin out of the box, but modifying your WordPress installation to be completely passwordless isn’t out of the question.

Magic Password looks promising, but there’s not much going on in this space right now.

Got any ideas on other ways to use the WP-CLI login command? Let us know! 👇

Join the discussion on Roots Discourse

Join over 5,600 subscribers on our newsletter to get the latest Roots updates, along with occasional tips on building better WordPress sites.

Looking for WordPress plugin recommendations, the newest modern WordPress projects, and general web development tips and articles?

“Easily the best WordPress email I get.” Colin OBrien

Ready to checkout?