WP-CLI – The command line interface for WordPress
Skip to content
WP-CLI
Welcome to
WP-CLI
WP-CLI
WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is
WP-CLI is the official command line tool for interacting with and managing your WordPress sites.
Need help with something? Please
review your available support options
Want to help make it better? Check out our
Contributing guide
for an introduction, or “
good first issues
” for your first pull request.
Contact
The WP-CLI team communicates on
Slack
, in the
#cli
channel.
There are currently no scheduled office hours, so feel free to chime in whenever.
X-comment from
+make.wordpress.org/community
: Comment on
The Incident Response Team is looking for new members
A new release of
WP-CLI
WP-CLI
WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is
WP-CLI v2.12.0
, is now available. For this release, we had
68 contributors
collaborate to get
382 pull requests
merged.
As always, big thanks to the
WP-CLI sponsors
that make the continued maintenance possible.
This release includes numerous bug fixes and compatibility improvements, but we still could teach WP-CLI a few new tricks which I’ll highlight below. As always, you can also skip directly to the
detailed changelog
if you prefer.
If you already use WP-CLI, updating is as simple as
wp cli update
. Else, check out our website for
recommended installation methods
Pluck & patch commands for caches and transients
The
cache
and
transient
commands have now also learned the subtle art of plucking and patching. This means that you can directly manipulate individual entries in an array of values that these commands let you manage.
Here’s an example of how such an operation can look and how it compare to the regular cache/transient operations:
# Transient structure
# 'some_key' => ['foo' => ['bar' => 'baz']]
# Retrieve the transient value
$ wp transient get some_key --format=json
{'foo':{'bar':'baz'}}
# Retrieve the value of the foo => bar subkey
$ wp transient pluck some_key foo bar
baz
# Replace baz with bazzer
$ wp transient patch update some_key foo bar bazzer
Success: Updated transient 'some_key'.
Post lists can now handle complex query flags
When using
post list
, you can now use
JSON
JSON
JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.
notation to provide complex query arguments to the
--tax_query
--meta_query
and
--post_date
fields.
$ wp post list --field=post_title --date_query='{"before":{"year":"2024"}}
+--------------------------+
| post_title |
+--------------------------+
| My year in review - 2021 |
| My year in review - 2022 |
| My year in review - 2023 |
+--------------------------+
$ wp post list --field=post_title --tax_query='[{"taxonomy":"category","field":"slug","terms":"first-category"}]'
...
$ wp post list --field=post_title --meta_query='[{"key":"key2","value":"value2b"}]'
...
Post
meta
Meta
Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress.
can be forced to only return a single value
The
post meta get
command now has a
--single
flag defaulting to
true
which can be negated with
--no-single
. This flag tells WordPress whether to only return a single value or all existing values for a given key.
# Create a post meta key for post with ID 123 that has multiple values
$ wp post meta add 123 my_meta_key value_1
$ wp post meta add 123 my_meta_key value_2
$ wp post meta add 123 my_meta_key value_4
# Retrieve a single value
$ wp post meta get 123 my_meta_key --single
value_1
# Retrieve all values
$ wp post meta get 123 my_meta_key --no-single --format=json
["value_1","value_2","value_3"]
Exclude files on
core checksum
verification
When running a
core checksum
verification, you can exclude one or more files from the checksum verification with the new
--exclude=
flag, which takes a comma-separated list of filepaths relative to the current root.
# Make a change to the README file in the WordPress core root folder
$ echo "nonsense" > readme.html
# Run the core checksum verification
$ wp core verify-checksums --exclude='readme.html'
Success: WordPress installation verifies against checksums.
Respect
requires
and
requires_php
tags for plugins and themes
The
plugin
Plugin
A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory
or can be cost-based plugin from a third-party.
and theme commands now understand and respect the
requires
and
requires_php
header
Header
The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes.
tags when trying ot install or update extensions. A new state
unavailable
has been introduced to denote the updates that are newer that your current installation but for which your site does not fulfill the requirements.
This also adds new fields
requires
and
requires_php
which are displayed if they contain relevant information and otherwise hidden by default.
$ wp plugin list
+----------------+----------+-------------+---------+----------------+-------------+----------+--------------+
| name | status | update | version | update_version | auto_update | requires | requires_php |
+----------------+----------+-------------+---------+----------------+-------------+----------+--------------+
| akismet | inactive | available | 5.1 | 5.3.5 | off | 5.8 | 5.6.20 |
| edit-flow | inactive | none | 0.9.9 | | off | 6.0 | 8.0 |
| wp-super-cache | inactive | unavailable | 1.9.4 | 1.12.4 | off | 6.5 | 7.0 |
+----------------+----------+-------------+---------+----------------+-------------+----------+--------------+
$ wp plugin update wp-super-cache
Warning: wp-super-cache: This update requires WordPress version 6.5, but the version installed is 6.2.
Error: No plugins updated.
More control over
make-json
generation
The
make-json
command was made more powerful again. You can not only set a custom text domain to be used, you can also define the file extension to parse.
# Use a custom text domain
$ wp i18n make-json foo-theme --domain=my-custom-domain
Success: Created 1 file.
# Include typescript files
$ wp i18n make-json foo-theme --extensions=".ts, .tsx"
Success: Created 2 files.
Force update checks on
plugin|theme list
When displaying the list of plugins or themes, WP-CLI now always ensures you get fresh data. No need to manually clear transients anymore! The existing
--skip-update-check
flag can be used to prevent this behavior.
# Clears any update transients to trigger an update check and display results
$ wp plugin list --fields=name,status,update --force-check
+-------------+----------+--------+
| name | status | update |
+-------------+----------+--------+
| hello-dolly | inactive | none |
+-------------+----------+--------+
PHP
PHP
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML.
8.4 Compatiblity
WP-CLI is now fully compatible with PHP 8.4. This has required quite a bit of trickery and hacks to maintain compatibility with our current minimum of PHP 5.6+ at the same time. With the next release, we’ll bump the minimum PHP version to 7.2.24+, which will allow us to get rid of all these workarounds again.
Detailed Change Log
wp-cli/wp-cli-bundle
Fix Phar path resolution with renamed binaries [
#752
Deployment: Fix
FILENAME
env var [
#696
Address deprecation warnings in Behat tests [
#663
wp-cli/wp-cli
Replace
duplicate-post
plugin with
debug-bar
in feature tests [
#6091
Use forked
mustache
library [
#6090
Escape CSV output [
#6089
Make sure existing
esc_like()
takes precedence [
#6088
Set
display_errors
to
stderr
(lowercase) instead of
STDERR
#6084
Fix update step for nightlies [
#6075
Detect MariaDB vs
MySQL
MySQL
MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored.
#6072
Update WP-CLI update message [
#6071
Add
WP_CLI_REQUIRE
environment variable for including extra PHP files [
#6070
Remove
array_column()
compatibility function [
#6068
Support multiple files in
WP_CLI_EARLY_REQUIRE
#6065
Properly create missing WP-CLI configuration file when needed [
#6062
Improve command suggestions for taxonomies and post types [
#6059
Fix undefined variable issue [
#6058
Pass
working-directory
and
stdin
to docker scheme [
#5974
] & [
#6057
Add test for line breaks in table view [
#6055
Ensure code after
wp-settings.php
call is loaded [
#6042
Allow collecting PHPUnit coverage [
#6041
don’t forcefully
exec()
docker version
#6040
Improve regular expression for detecting
wp-settings.php
#6039
Check PHP version requirement in update check [
#6037
Add hook to
http_request()
utility function [
#6036
Add PHPDoc for
cmd_starts_with()
method [
#6034
Update expected error message in unit tests [
#6032
Update outdated AJAX documentation link [
#6031
Add global documentation [
#6017
Allow remote binary customization [
#6013
Add configurable user agent to WP-CLI to detect in firewall logs [
#5998
Convert PHPUnit deprecations into exceptions [
#5994
Remove unused automerge workflow [
#5992
Fix CSV escaping deprecation notices [
#5991
Check for root earlier [
#5987
Remove use of
E_STRICT
for
wp_debug_mode()
#5986
Fix deprecation notices for
ReflectionProperty::setValue()
#5984
Fix “missing return type” deprecation warnings in
WP_CLI\Iterators\CSV
#5983
Fix implicitly nullable parameters [
#5982
Update Requests to v2.0.12 [
#5981
Update log and warning logger functions comment according to the actual functionality [
#5979
Add defaults and accepted values for
runcommand()
options in documentation [
#5953
wp-cli/handbook
Update documentation to include new
WP_CLI_SSH_BINARY
value [
#559
Add documentation for newly supported
ENV
vars [
#556
Update
URL
URL
A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org
for True-False Hosting [
#553
wp-cli/cache-command
Fix expired transients tests [
#104
Allow manually dispatching tests workflow [
#99
Make transient test more robust against added transients by
core
Core
Core is the set of software required to run WordPress. The Core Development Team builds WordPress.
#98
Add
pluck
patch
commands for caches and transients [
#89
wp-cli/checksum-command
Add blank space when trimming the version [
#130
Add
--exclude
argument for verifying checksums [
#123
Remove unused variable [
#134
Don’t check missing files [
#131
wp-cli/config-command
Don’t require file to be writable for
config has
#187
Suppress output of
eval(get_wp_config_code)
preventing errors printing twice [
#188
wp-cli/core-command
Fix flaky tests due to changing download URL [
#277
Allow installing major version with trailing zero [
#276
Use existing
WpOrgApi
helper class [
#283
Add doc comment for
$insecure
#281
Host shouldn’t include
#279
wp-cli/cron-command
Harden test checking for log file [
#111
wp-cli/db-command
Correct error message in
db search
for
--format=count
#267
Update
db search
documentation [
#265
Add
--add-drop-table
to
export
command options [
#263
Improve MariaDB detection/compatibility [
#280
Add affected rows count for queries that can modify data in
db query
#277
Don’t hardcode MySQL command names [
#275
wp-cli/entity-command
Add missing options header in
signup list
command [
#508
Ensure
user update
returns non-zero exit code for invalid users [
#527
Make
term-migrate
test more robust [
#524
Add a flag for getting post meta as a single value or not [
#523
Add JSON input support for
tax_query
and
meta_query
#522
Add JSON input support for
date_query
argument [
#520
wp option
– new autoload values in autoload
filter
Filter
Filters are one of the two types of Hooks
. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.
#515
Return a proper
WP_Error
object when failing to update a comment [
#514
Add test cases asserting
post/term update
error exit codes [
#513
Safeguard
remove cap
from collisions with roles [
#530
wp-cli/export-command
Use
get_post_stati()
instead of
get_post_statuses()
to support all registered post statuses in export [
#121
wp-cli/extension-command
Use
strpos()
instead of
str_contains()
in
get_wporg_data()
function [
#432
Don’t use transient values when doing
plugin|theme list
#446
Fix fatal error issue in
in_array()
function [
#445
Support
requires
and
requires_php
in
plugin|theme list
and
plugin|theme update
commands [
#440
Update logic when deleting and uninstalling plugins [
#438
Check WordPress and PHP requirements before installing a theme or plugin [
#436
Add
--force-check
flag to
wp plugin list
and
wp theme list
. [
#426
Cache certain
GitHub
GitHub
GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner.
URLs [
#385
wp-cli/i18n-command
Convert PHPUnit deprecations to exceptions [
#413
make-pot
: scan any
theme.json
file in any level [
#424
Add ability to pass extensions to
make-json
command [
#439
Update schema fallback files [
#431
make-json
: Add new
--domain
argument [
#430
update-po
: merge
X-Domain
header [
#429
Add
php-format
and
js-format
flags [
#428
wp-cli/language-command
Mention
site switch-language
in readme [
#159
Allow filtering languages by multiple statuses [
#162
wp-cli/php-cli-tools
Example code: remove use of
E_STRICT
#175
Fix implicitly nullable parameters [
#173
Replace tabs in tables with 4 spaces [
#181
Properly handle line breaks in column value [
#179
Support line breaks and tab replacement in tabular table values [
#182
Fix removal of trailing tab / whitespace in tabular table [
#184
Avoid deprecation warnings in newer PHP [
#185
wp-cli/rewrite-command
Improve warning message in
rewrite flush
#69
wp-cli/scaffold-command
Convert PHPUnit deprecations to exceptions [
#348
Add dependency checks and error handling for
svn
and download tools [
#345
Accept Bitbucket as valid CI in
scaffold plugin
#340
Update Bitbucket CI [
#339
Update templates for
child theme
Child theme
A Child Theme is a customized theme based upon a Parent Theme. It’s considered best practice to create a child theme if you want to modify the CSS of your theme.
scaffolding [
#342
Update
custom post type
Custom Post Type
WordPress can hold and display many different types of content. A single item of such a content is generally called a post, although post is also a specific post type. Custom Post Types gives your site the ability to have templated posts, to simplify the concept.
and
taxonomy
Taxonomy
A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format.
scaffolding [
#341
Update GitLab CI configuration file [
#338
Remove
grunt
from plugin scaffolding [
#337
wp-cli/shell-command
Add missing
do
construct [
#68
wp-cli/wp-config-transformer
Add read-only option for
WPConfigTransformer
#54
Add a
branch-alias
for
dev-main
#55
Deletion of constants deletes more lines than expected [
#53
Contributors
@9ete
@amirhmoradi
@baizmandesign
@benjaminprojas
@BhargavBhandari90
@cliffordp
@daalderp
@dac514
@danielbachhuber
@dd32
@dkoston
@dlind1
@drzraf
@elenachavdarova
@ernilambar
@gedex
@gitlost
@greatislander
@herregroen
@i-am-chitti
@iDschepe
@imrraaj
@itsmekopila
@janw-me
@jenkoian
@jkrrv
@jrfnl
@karthick-murugan
@l3ku
@localheinz
@marksabbath
@matiasbenedetto
@matzeeable
@meszarosrob
@michaelw85
@michaelzangl
@mostafasoufi
@mrsdizzie
@oandregal
@ocean90
@ouikhuan
@PARTHVATALIYA
@pbiron
@peterwilsoncc
@petitphp
@pfefferle
@pmbaldha
@ponsfrilus
@pwtyler
@ramonjd
@rodrigoprimo
@Roy-Orbison
@saas786
@sabithahmd
@sdnunca
@shendy-a8c
@shreya0204
@siliconforks
@strarsis
@swissspidy
@todeveni
@Tug
@tyrann0us
@wojsmol
@wpeople-dev
@WPprodigy
@yousan
release
v2-12-0
X-post from
+make.wordpress.org/community
Announcing the Third Cohort (2024 Q4) of the WordPress Contributor Mentorship Program
X-post from
+make.wordpress.org/project
WordPress Contributor Mentorship Program Cohort #3 (2024 Q4): Call for Mentees & Mentors
A new release of
WP-CLI
WP-CLI
WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is
WP-CLI v2.11.0
, is now available. For this release, we had
61 contributors
collaborate to get
274 pull requests
merged.
As always, big thanks to the
WP-CLI sponsors
that make the continued maintenance possible.
This is a small release that fixes a lot of small and not so small bugs, but we also have a couple of new features that I’ll want to highlight. As always, you can also skip directly to the
detailed changelog
if you prefer.
If you already use WP-CLI, updating is as simple as
wp cli update
. Else, check out our website for
recommended installation methods
Thank you for providing the additional details on the pull requests. I’ll go through each one and provide improved highlights with examples and usage details:
Improved CSV Handling
The CSV reading functionality has been enhanced to properly handle multi-line values. This fix ensures that complex CSV data can be processed correctly, improving the reliability of commands that work with CSV input.
Example of a CSV file that can now be correctly processed:
id,name,description
1,"Product A","This is a
multi-line
description"
2,"Product B","Another description"
New Signup Management Commands
New commands have been added for managing signups on
multisite
Multisite
Multisite is a WordPress feature which allows users to create a network of sites on a single WordPress installation. Available since WordPress version 3.0, Multisite is a continuation of WPMU or WordPress Multiuser project. WordPress MultiUser project was discontinued and its features were included into WordPress core.
Advanced Administration Handbook -> Create A Network.
installations:
wp user signup list
: List signups
wp user signup get
: Get details about a signup
wp user signup activate
: Activate one or more signups
wp user signup delete
: Delete one or more signups
Example usage:
# List all signups
$ wp user signup list
# Activate a signup
$ wp user signup activate johndoe@example.com
# Delete a signup
$ wp user signup delete 123
New Site Generator Command
A new
wp site generate
command has been added to create multiple sites programmatically in a multisite installation. This is useful for testing or development purposes.
Example usage:
# Generate 10 new sites
$ wp site generate --count=10
# Generate sites with a specific slug
$ wp site generate --count=2 --slug=testsite
GitHub
GitHub
GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner.
Release Installation Support
The extension command now supports installing plugins and themes directly from GitHub releases. This feature allows users to easily install and manage extensions hosted on GitHub without manual downloads.
Example usage:
# Install a plugin from its latest GitHub release
$ wp plugin install https://github.com/username/plugin-name/releases/latest
# Install a specific version of a theme from GitHub
$ wp theme install https://github.com/username/theme-name/releases/tag/v1.2.3
Improved
Plugin
Plugin
A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory
or can be cost-based plugin from a third-party.
Management
A new
--recently-active
option has been added to the
plugin list
command, allowing users to quickly identify and manage plugins that have been recently active on their site.
Example usage:
# List recently active plugins
$ wp plugin list --recently-active
# Activate all recently active plugins
$ wp plugin activate $(wp plugin list --recently-active --field=name)
Option to Delete Unknown Image Sizes
A new
--delete-unknown
flag has been added to the
wp media regenerate
command. This allows users to remove files and image metadata for image sizes that no longer exist in the site’s configuration, without regenerating other thumbnails.
Example usage:
# Remove unknown image sizes for all images
$ wp media regenerate --delete-unknown
# Remove unknown image sizes for a specific image
$ wp media regenerate 123 --delete-unknown
This feature is particularly useful for cleaning up after changing image size configurations or removing plugins that added custom image sizes.
User Existence Check Command
A new
wp user exists
command has been added, similar to the existing
wp post exists
command. This allows for quick checks on whether a user exists in the WordPress database.
Example usage:
# The user exists.
$ wp user exists 1337
Success: User with ID 1337 exists.
$ echo $?
# The user does not exist.
$ wp user exists 10000
$ echo $?
Fish Shell Completion Support
WP-CLI now supports command completion for the Fish shell, expanding its compatibility beyond Bash and Zsh. This addition makes it easier for Fish shell users to work with WP-CLI commands.
Detailed change log
To avoid too much noise in the list above, the following types of pull requests have been omitted:
PRs that only bumped dependencies to their latest version.
PRs that only fixed a typo in the documentation.
PRs that add a Composer script
wp-cli/wp-cli-bundle
Update versions of WP-CLI used in tests [
#658
Stop testing WordPress
latest
version on
PHP
PHP
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML.
< 7.2 [
#651
wp-cli/wp-cli
Add fish shell completion [
#5954
Add defaults and accepted values for
runcommand()
options in documentation [
#5953
Address warnings with filenames ending in full stop on Windows [
#5951
Fix unit tests [
#5950
Update copyright year in license [
#5942
Fix breaking multi-line CSV values on reading [
#5939
Fix broken
Gutenberg
Gutenberg
The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc.
test [
#5938
Update docker runner to resolve docker path using
/usr/bin/env
#5936
Fix
inherit
path in nested directory [
#5930
Minor docblock improvements [
#5929
Add Signup fetcher [
#5926
Ensure the alias has the leading
symbol when added [
#5924
Include any non-default hook information in
CompositeCommand
#5921
Correct completion case when it ends in
#5913
Fix inline comments [
#5912
Update inline comments [
#5910
Add a real-world example for
cli has-command
#5908
Fix typos [
#5901
Avoid PHP deprecation notices in PHP 8.1.x [
#5899
wp-cli/handbook
Update handbook for v2.11.0 release [
#531
Add missing scaffold package markdown files [
#529
Fix
Undefined array key
warning [
#525
Add files autoloader for
bin/command.php
#524
Small typo correction [
#523
Fix documentation generation error [
#520
Add Yoast WP-CLI command to
tools.md
#517
Add search and replace quick start & adding new command [
#515
Add Composer package name [
#514
Clean up hosting links [
#513
Add to
hosting-companies.md
#512
Remove invalid link from handbook [
#511
Update
contributor day
Contributor Day
Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of
There are many teams that people can participate in, each with a different focus.
page for WCEU 2024 [
#510
Add documentation on Fish completions [
#508
Add code quality setup [
#506
Fix global parameters 404 link [
#504
Fix release checklist hyperlink [
#503
Fix broken link for the global parameters hyperlink [
#502
Include hook details in documentation [
#501
Add link to contribution tutorial videos [
#500
Update
hosting-companies.md
#499
Refresh the Hack Day page for April 2024 [
#498
Fix branch name in common issues handbook page [
#497
Fix common issues title [
#496
Fix broken link [
#494
Add Hack Day page to manifest [
#492
Separate out the WP-CLI Hack Day and
WordCamp
WordCamp
WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy.
Contributor Day docs [
#490
Update
running-commands-remotely.md
#489
Update brew formula link [
#487
Update
installing.md
#481
wp-cli/cache-command
Update failing tests after new transient in WP
core
Core
Core is the set of software required to run WordPress. The Core Development Team builds WordPress.
#97
wp-cli/config-command
Improve messaging when shuffling salts [
#177
Fix incorrect message shuffling salt in PHP 5.6 [
#176
Update
config
commands examples [
#174
Refactor
config create
command [
#181
wp-cli/core-command
Remove extraneous argument in
core update
example [
#255
Fix
--format
in
core check-update
command [
#253
Update
core
commands docs [
#251
wp-cli/cron-command
Fix
cron
commands examples [
#102
Add
--all
flag to
cron event delete
#98
wp-cli/db-command
Add note about multisite usage in
db query
docs [
#251
Enable
--format=
for
db search
#247
Update tests after change in WP
trunk
version [
#257
wp-cli/embed-command
Update examples for
embed
commands [
#75
wp-cli/entity-command
Avoid time dependent test in
user application-password
#499
Support new upstream autoload options [
#496
Support nickname when creating user [
#495
Use
twentytwelve
theme in menu location test [
#494
Add examples for
option set-autoload
and
option get-autoload
commands [
#492
Add missing
## OPTIONS
in
CommandWithTerms
class [
#487
Add
user exists
command [
#486
Accept user login and email in
user spam
and
user unspam
commands [
#485
Update doc for
user spam
and
user unspam
command [
#483
Validate reassigning user in
user delete
command [
#482
Fix warning message in
user spam
command [
#481
Add missing
application-password
and
site meta
subcommands to readme [
#478
Introduce
--format=ids
in
user application-password list
#475
Fix dynamic property issue in user session class [
#470
Fix PHP notice in
comment recount
with invalid ID [
#469
Fix example for
site deactivate
command [
#468
Update examples in
user
commands [
#467
Update
term
commands examples [
#466
Update example output for
comment delete
command [
#465
Fix
command output examples [
#462
Add
site generate
command [
#498
Add commands for managing signups on multisite [
#489
wp-cli/extension-command
Improve warning message for installing and activating multiple themes [
#419
Replace
user-switching
plugin from feature tests [
#418
Update the theme in feature tests [
#417
Show additional plugin
header
Header
The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes.
values in
plugin get
output [
#414
Add
tested_up_to
field [
#413
Warn when supplying multiple themes with
theme install --activate
#408
Fix
plugin
commands examples [
#403
Update
theme
commands examples [
#401
Correct parameter type in
ParseThemeNameInput
trait [
#400
Add
--recently-active
option in
plugin list
command [
#424
Fix visibility in command class methods [
#423
Add support for GitHub release installation [
#421
Replace
edit-flow
plugin by
debug-bar
in feature tests [
#427
wp-cli/i18n-command
Skip strings without translation in
make-php
#389
Add more headers to PHP translation files [
#388
Use relative paths for file header references [
#384
Translate “description” field from
theme.json
#408
Revert changes to extract title from
styles.blocks.variations
#407
find
title
string within
styles.blocks.variations
in
theme.json
#405
Add tests for
rspack
and
esbuild
bundle output [
#404
Fix deprecation warnings in unit tests [
#402
Use relative paths for file header references (Windows fix) [
#400
Ensure that the POT file uses the same license as the theme [
#399
Add examples for
i18n update-po
command [
#392
Add examples for
i18 make-pot
#390
wp-cli/language-command
Update examples for
language
command [
#145
Update examples for
language core
command [
#142
Update examples for
language theme
command [
#141
Update examples for
language plugin
command [
#140
Improve warning message for unavailable language pack [
#139
Update doc for
language core install
command [
#153
Add
--format=count
in
language list
commands [
#151
Update feature tests for
language core update
#149
wp-cli/maintenance-mode-command
Add missing
OPTIONS
heading in
maintenance-mode activate
command [
#28
wp-cli/media-command
Fix incorrect image sizes in
media image-size
command [
#192
Remove extraneous error check [
#191
Update
media
commands examples [
#189
Optimize memory consumption when querying attachments [
#188
Add option to delete unknown image sizes [
#199
wp-cli/package-command
Update docs and examples for
package
commands [
#186
Fix failing test [
#185
Fix failing PHPUnit tests [
#188
wp-cli/php-cli-tools
Fix unit tests [
#172
wp-cli/scaffold-command
Update theme tests to remove
p2
and use
twentytwelve
#336
Correct plugin main file in bootstrap in scaffolded test [
#335
Scaffold theme test should work in PHP greater than 8.0 [
#334
Add GitHub as valid CI for
plugin scaffold
and
theme scaffold
#331
Update
scaffold
command examples [
#329
wp-cli/search-replace-command
Fix tests after change in WordPress trunk [
#195
Fix test for WordPress trunk [
#197
wp-cli/super-admin-command
Add IDs as format for
super admin
list [
#60
Correct
super-admin
commands examples [
#57
wp-cli/widget-command
Replace
p2
theme with
twentytwelve
in feature test [
#61
wp-cli/wp-config-transformer
Fix failing PHPUnit tests [
#52
Contributors
@2ndkauboy
@aldisruiz
@austinginder
@benjaminprojas
@BrianHenryIE
@Chintesh
@christianwach
@cliffordp
@dac514
@danielbachhuber
@dd32
@dlind1
@drzraf
@elenachavdarova
@ernilambar
@gedex
@gitlost
@grafruessel
@greatislander
@herregroen
@huzaifaalmesbah
@i-am-chitti
@janw-me
@jenkoian
@jkrrv
@jrfnl
@l3ku
@localheinz
@matzeeable
@meszarosrob
@michaelzangl
@Mike-Hermans
@mrsdizzie
@oandregal
@ocean90
@oxyc
@pbiron
@pdaalder
@petitphp
@pmbaldha
@ponsfrilus
@ramonjd
@rodrigoprimo
@Roy-Orbison
@saas786
@schlessera
@Scotchester
@sdnunca
@shawnhooper
@shendy-a8c
@siliconforks
@strarsis
@swissspidy
@szepeviktor
@Takshil-Kunadia
@tfirdaus
@thelovekesh
@Tug
@UmeshSingla
@wojsmol
@yousan
release
v2-11-0
The v2.11.0 release of
WP-CLI
WP-CLI
WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is
is scheduled to be published on Tuesday, August 6th 2024.
Apart from bug fixes and compatibility improvements, you can also expect a few command and parameter additions to help make the tool more efficient, as well as a large swath of documentation fixes and improvements.
The third ever
WP-CLI
WP-CLI
WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is
Hack Day is now complete!
It was really nice to connect with folks both on Zoom and in
Slack
Slack
Slack is a Collaborative Group Chat Platform
. The WordPress community has its own Slack Channel at
. With how much async collaboration we have in the project, it’s quite refreshing to discuss bugs and implementations in real-time. I think we had a Zoom room open for over seven hours.
Many thanks to everyone that participated!
abhi3315
brianhenryie
danielbachhuber
, Deepak Kumar, isla w,
johnbillion
kau-boy
mkrndmane
meszarosrob
petitphp
rabmalin
schlessera
swissspidy
, Takshil Kunadia,
tfirdaus
thelovekesh
We had
15 pull requests that were merged
during the event:
Update docker runner to resolve docker path using
/usr/bin/env
Add
fetcher
Fix broken Gutenberg test
Warn when supplying multiple themes with
theme install --activate
Add
wp-versions-data-fetcher
workflow
Improve warning message for install and activate multiple themes
Fix breaking multi-line CSV values on reading
Ensure that the POT file use the same license as the theme
Fix
inherit
path in nested directory
Update failing tests after new transient in WP core
Add
tested_up_to
field
Correct plugin main file in bootstrap in scaffolded test
Include any non default hook information in CompositeCommand
Add support for GitHub release installation
Enable
--format=
for
db search
In addition to those, we had an additional
6 pull requests with substantial progress
during the event that aren’t yet merged:
Add Support for Retry in WP CLI Core Download Command
Support beta/rc releases
Add commands for managing signups on multisite
Add site generator command
Add
--format
flag in
core update
Add pluck/patch commands for caches and transients
See you at the next WP-CLI Hack Day!
We’re happy to announce the third ever
WP-CLI
WP-CLI
WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is
Hack Day
! 🤓🎈
On 🕓
Friday, 26th April 2024
we’ll officially kick off the WP-CLI Hack Day at 🕗
Friday, 26th April 2024, 0800 UTC
. From that point on,
schlessera
swissspidy
, and I will be generally available in
Slack #cli channel
and on the
GitHub
wp-cli
organization
to onboard new contributors, help people pick issues to work on and remove hurdles that keep them from finishing their PRs. This will continue more or less without interruption during the entire event.
From 🕓
Friday, 26th April 2024, 0900 UTC
to
Friday, 26th April 2024, 1000 UTC
and then again between 🕓
Friday, 26th April 2024, 1500 UTC
and
Friday, 26th April 2024, 1600 UTC
we’ll have an open video chat that everyone can join, where we can discuss remaining issues live and chat about the progress we’ve made. This extended video chat session will then conclude the event. Shortly after 🕕
Friday, 26th April 2024, 2200 UTC
, I will post a
make/cli
blog post about the progress we were able to make during the allotted time frame.
The 🎯
goal
for this WP-CLI Hack Day is both simple and ambitious:
Finish the day with 2️⃣0️⃣ pull requests that have been merged during the event ❗️
Everyone is welcome to participate! This event is supposed to be fun and inspiring, and we expect people to help each other make progress along the way.
Let’s make this happen! 👍
The official hashtag for the event is
#hackwpcli
hack-day
A new release of
WP-CLI
WP-CLI
WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is
WP-CLI v2.10.0
, is now available. For this release, we had
63 contributors
collaborate to get
233 pull requests
merged.
As always, big thanks to the
WP-CLI sponsors
that make the continued maintenance possible.
This is a small release that fixes a lot of small and not so small bugs, but we also have a couple of new features that I’ll want to highlight. As always, you can also skip directly to the
detailed changelog
if you prefer.
If you already use WP-CLI, updating is as simple as
wp cli update
. Else, check out our website for
recommended installation methods
New
i18n make-php
command
The WordPress
core
Core
Core is the set of software required to run WordPress. The Core Development Team builds WordPress.
performance team is working on the
Performant Translations
feature project, which aims to speed up translations by using
PHP
PHP
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML.
files instead of MO files. The goal is to get it ready for WordPress 6.5.
The new
i18n make-php
command allows you to experiment with these faster translations right away and see how these work for your projects.
# Create PHP files for all PO files in the current directory.
$ wp i18n make-php .
# Create a PHP file from a single PO file in a specific directory.
$ wp i18n make-php example-plugin-de_DE.po languages
Update themes to minor or patch versions
When updating themes with WP-CLI, you can now to choose to only update to the latest minor or patch version with the new flags
--minor
and
--patch
You could already do this for
plugin
Plugin
A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory
or can be cost-based plugin from a third-party.
updates, and now themes are joining the club as well.
Support for adding and removing of multiple user roles
The two commands
user add-role
and
user remove-role
are now less lazy and can accept multiple roles to add or remove for a given user. You can make this work by simply adding as many roles as needed as separate arguments.
$ wp user add-role 12 author editor
Success: Added 'author', 'editor' roles for johndoe (12).
$ wp user remove-role 12 author editor
Success: Removed 'author', 'editor' roles for johndoe (12).
Filter
Filter
Filters are one of the two types of Hooks
. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.
the site list by user
When displaying a list of sites on your
multisite
Multisite
Multisite is a WordPress feature which allows users to create a network of sites on a single WordPress installation. Available since WordPress version 3.0, Multisite is a continuation of WPMU or WordPress Multiuser project. WordPress MultiUser project was discontinued and its features were included into WordPress core.
Advanced Administration Handbook -> Create A Network.
network, you can now filter this list by a site user and only display sites that this user is a part of. You can do so by using the new
--site_user
flag for the
site list
command.
This can be helpful for administrative tasks around access control or for offboarding users.
Detailed change log
To avoid too much noise in the list above, the following types of pull requests have been omitted:
PRs that only bumped dependencies to their latest version.
PRs that only fixed a typo in the documentation.
PRs that add a Composer script
wp-cli/wp-cli-bundle
Fix SQLite tests [
#588
wp-cli/wp-cli
Fix PHP deprecation warnings [
#5897
Only use
--skip-column-statistics
flag when available [
#5895
Handle unparseable tags gracefully [
#5894
WpOrgApi
: allow specifying fields request parameters [
#5893
Remove unneeded compatibility shim [
#5885
Use
has_config()
in
get_config()
to prevent warnings on
null
values [
#5880
Suggest
'network meta'
intead of
'network option'
#5879
Updated docblock for
admin.php
#5877
Fix PHP fatals when
admin.php
has
CRLF
line endings [
#5875
Standard completion of current option [
#5873
Add
WP_CLI\Utils\has_stdin()
function [
#5872
Add verbosity level and quiet flag in ssh command based on debug flag [
#5869
Remove the pre-commit hook installation and its corresponding command [
#5868
Add missing required arguments when using
--prompt
#5865
Move
RecursiveDataStructureTraverser
to
wp-cli/wp-cli
package [
#5864
] [
#5866
] [
#5871
Add
docker compose
command support in
SSH
SSH
Secure SHell - a protocol for securely connecting to a remote system in addition to or in place of a password.
command generation [
#5863
Add missing documentation for
$data
attribute in
http_request()
#5861
Update inline PHP documentation [
#5853
Remove
contrib-list.php
#5851
Update release checklist template [
#5850
Update tests to accommodate for SQLite [
#5849
Post-release version bump after v2.9.0 [
#5848
Update
Formatter\show_table
to use
Runner->in_color
rather than
shouldColorize
#5804
wp-cli/handbook
Fix handbook generation when Phar is used directly [
#476
Hack Day edits [
#474
Refresh functional test docs [
#471
Refresh
Contributor Day
Contributor Day
Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of
There are many teams that people can participate in, each with a different focus.
Page for November 2023 Hack Day [
#470
wp-cli/wp-cli.github.com
Update translations [
#434
Fix link in
index.md
#433
Update
ja/index.md
#432
wp-cli/checksum-command
Add edge case handling checksum verification of
hello-dolly
plugin [
#119
wp-cli/config-command
Add support for
MySQL
MySQL
MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored.
socket connection [
#171
Fix tests for SQLite [
#168
wp-cli/core-command
Add
--force-check
flag to
check-update
command [
#246
Improve SQLite compatibility [
#243
wp-cli/db-command
Better document
--skip-column-names
for retrieving a specific value [
#249
Regenerate README file [
#246
Document what
wp db check
doesn’t do and provide suggestions for next commands [
#244
wp-cli/entity-command
Add missing documentation [
#451
Add command to get the post ID by
URL
URL
A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org
#449
Fix archiving a site by numeric slug [
#448
Regenerate README file [
#447
Add
origin
and
exclude-role-names
filters to
list-caps
command [
#445
Fix deleting a site by a slug that is an integer [
#444
Reuse
has_stdin()
from framework [
#443
Remove
RecursiveDataStructureTraverser
#442
Support for adding and removing of multiple user roles [
#437
Add examples on listing unapproved, spam and
trash
Trash
Trash in WordPress is like the Recycle Bin on your PC or Trash in your Macintosh computer. Users with the proper permission level (administrators and editors) have the ability to delete a post, page, and/or comments. When you delete the item, it is moved to the trash folder where it will remain for 30 days.
comments [
#436
Fix super admin test on SQLite [
#434
Do not assume
get_super_admins()
has the
array index [
#432
Improve SQLite compatibility [
#431
Fix example for
post create
command [
#458
Update examples for
user application delete
command [
#457
Regenerate README file [
#456
Fix variable name in
application_name_exists
polyfill [
#455
Add filter
site__user_in
on
wp site list
#438
wp-cli/extension-command
Regenerate README file [
#381
Add
update_version
to the default fields for
plugin
and
theme
commands [
#380
Update some tests for SQLite [
#378
Remove duplicated code [
#391
Switch tests to use
site-secrets
instead of
user-switching
#389
Support
'wporg_status'
and
'wporg_last_updated'
as optional
wp plugin list
fields [
#382
Regenerate README file [
#397
Added
--minor
and
--patch
CLI
CLI
Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress.
option in
wp theme update
#393
Fix counting of errors when attempting activations [
#398
wp-cli/i18n-command
make-mo
: Add destination file support [
#373
Stage the correct files in schema workflow [
#370
Update
theme-i18n.json
#366
Fix file format in
make-php
#379
Regenerate README file [
#378
Add file references for plugin/theme headers [
#377
Add
wp i18n make-php
command [
#363
wp-cli/language-command
Fix tests after WordPress 6.4 release [
#133
Skip some tests on SQLite [
#132
Allow for PHP 8.2+ warning on old WP core [
#130
Remove use of
@require-wp-latest
#135
Re-enable some tests for SQLite [
#134
Properly delete
JSON
JSON
JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML.
& PHP translation files [
#137
wp-cli/maintenance-mode-command
Evaluate
$upgrading
numeric value when checking if maintenance mode is active [
#22
wp-cli/media-command
Add
--file_name=
argument for
wp media import
#187
wp-cli/package-command
Fix compatibility with newer Composer versions [
#183
wp-cli/php-cli-tools
Fix
maxFlag
to
flagMax
and
maxOption
to
optionMax
typos in
HelpScreen
class [
#170
Use class instead of static variables for the speed measurement [
#168
Remove inexistent
post-install-cmd
#167
Fix type hinting for prompt function [
#141
wp-cli/scaffold-command
Add
@require-mysql
for tests with explicit MySQL dependency [
#326
Remove Travis CI from
wp scaffold plugin-tests
#325
wp-cli/search-replace-command
Skip search and replace on objects that can’t deserialize safely [
#192
PHP 8.2 Deprecation: Fix creation of dynamic property. [
#193
wp-cli/super-admin-command
PHP 8.2 Deprecation: Fix creation of dynamic property. [
#55
wp-cli/wp-config-transformer
Replace DOS line endings with LF [
#49
Fix empty line comment parsing by checking for the existing of a line ending [
#48
Contributors
@2ndkauboy
@benjaminprojas
@benlk
@christianwach
@cliffordp
@connerbw
@Dan-Q
@danielbachhuber
@dd32
@dlind1
@dougaxe1
@drzraf
@elenachavdarova
@ernilambar
@gedex
@gitlost
@greatislander
@herregroen
@janw-me
@jenkoian
@johnbillion
@johnrom
@jrfnl
@JulianBustamante
@kodie
@krupal-panchal
@l3ku
@localheinz
@MarkBerube
@marksabbath
@matzeeable
@michaelzangl
@oandregal
@ocean90
@pbiron
@pdaalder
@pekkakortelainen
@pfefferle
@pmbaldha
@ponsfrilus
@rodrigoprimo
@Roy-Orbison
@sandeshjangam
@schlessera
@sdnunca
@sejas
@selul
@shail-mehta
@shawnhooper
@shendy-a8c
@siliconforks
@Soean
@strarsis
@swissspidy
@thelovekesh
@todeveni
@Tug
@up1512001
@valeriySeregin
@wojsmol
@wojtekn
@xknown
@yousan
release
v2-10-0
X-comment from
+make.wordpress.org/project
: Comment on
Incident Response Team: Call for Nominations
Site resources
WP-CLI Sponsors
Ongoing maintenance is made possible by
Learn more...
Regular Chats
Our office hours are held
weekly on Thursdays at 15:00 UTC
Next meeting:
Thursday 15:00 UTC
Email Updates
Enter your email address to subscribe to this blog and receive notifications of new posts by email. Expect to receive a up to a few updates per month.
Join 585 other subscribers
Recent Activity
Recent Updates
Recent Comments
No Replies
Team Pledges
743 people
have pledged time to contribute to CLI Team efforts! When looking for help on a project or program, try starting by reaching out to them!
compose new post
reply
edit
go to top
go to the next post or comment
go to the previous post or comment
toggle comment visibility
esc
cancel edit post or comment