Argument List Too Long with WP-CLI

When using command line applications, like WP-CLI, you may run into a scenario where you’re attempting to pass too much information via arguments. That will result in an error like zsh: argument list too long: wp or /usr/local/bin/wp: Argument list too long. Similar to website URLs, there is a maximum length a command can be. These maximum lengths will vary by computer.

Good news, these limitations can be worked around using HereDocs instead of arguments.

Recently, I ran into this argument limitation while attempting to use wp post meta update with a very large piece of data. I overcame the argument limitation using here documents which will instead stream it to the command. This same approach can be applied for other use cases. Here are a few examples using HereDocs with WP-CLI.

Deletes massive list of posts IDs.

wp post delete --prompt << heredoc
$(wp post list --format=ids)
heredoc

Updates post meta with contents of a massive json file.

wp post meta update 123 custom_field << heredoc
$(cat massive.json)
heredoc

Or similar, updates post meta with contents of a massive bash variable.

wp post meta update 123 custom_field << heredoc
$json
heredoc

Reference: WP-CLI issue #3607