WordPress at a glance
Home Handbook WP-CLI Commands

wp rewrite

Lists or flushes the site’s rewrite rules, updates the permalink structure.

See WP Rewrite class reference.

Commands Description
Flushes rewrite rules.
Updates the permalink structure.
Gets a list of the current rewrite rules.

Examples

# Flush rewrite rules
$ wp rewrite flush
Success: Rewrite rules flushed.

# Update permalink structure
$ wp rewrite structure '/%year%/%monthnum%/%postname%'
Success: Rewrite structure set.

# List rewrite rules
$ wp rewrite list --format=csv
match,query,source
^wp-json/?$,index.php?rest_route=/,other
^wp-json/(.*)?,index.php?rest_route=/$matches[1],other
category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$,index.php?category_name=$matches[1]&feed=$matches[2],category
category/(.+?)/(feed|rdf|rss|rss2|atom)/?$,index.php?category_name=$matches[1]&feed=$matches[2],category
category/(.+?)/embed/?$,index.php?category_name=$matches[1]&embed=true,category

Source code of the commands


menu

wp rewrite flush

Flushes rewrite rules.

Resets WordPress' rewrite rules based on registered post types, etc.

To regenerate a .htaccess file with WP-CLI, you'll need to add the mod_rewrite module to your wp-cli.yml or config.yml. For example:

apache_modules:

  • mod_rewrite

Usage

wp rewrite flush [--hard]

You can specify global options and the following:

[--hard]
Perform a hard flush - update .htaccess rules as well as rewrite rules in database. Works only on single site installs.

Examples

$ wp rewrite flush
Success: Rewrite rules flushed.

wp rewrite structure

Updates the permalink structure.

Sets the post permalink structure to the specified pattern.

To regenerate a .htaccess file with WP-CLI, you'll need to add the mod_rewrite module to your WP-CLI config. For example:

apache_modules:

  • mod_rewrite

Usage

wp rewrite structure {permastruct} [--category-base={base}] [--tag-base={base}] [--hard]

You can specify global options and the following:

{permastruct}
The new permalink structure to apply.
[--category-base={base}]
Set the base for category permalinks, i.e. '/category/'.
[--tag-base={base}]
Set the base for tag permalinks, i.e. '/tag/'.
[--hard]
Perform a hard flush - update .htaccess rules as well as rewrite rules in database.

Examples

$ wp rewrite structure '/%year%/%monthnum%/%postname%/'
Success: Rewrite structure set.
menu

wp rewrite list

Gets a list of the current rewrite rules.

Usage

wp rewrite list [--match={url}] [--source={source}] [--fields={fields}] [--format={format}]

You can specify global options and the following:

[--match={url}]
Show rewrite rules matching a particular URL.
[--source={source}]
Show rewrite rules from a particular source.
[--fields={fields}]
Limit the output to specific fields. Defaults to match,query,source.
[--format={format}]

Render output in a particular format.
Default: table
Can be:

  • table
  • csv
  • json
  • count
  • yaml

Examples

$ wp rewrite list --format=csv
match,query,source
^wp-json/?$,index.php?rest_route=/,other
^wp-json/(.*)?,index.php?rest_route=/$matches[1],other
category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$,index.php?category_name=$matches[1]&feed=$matches[2],category
category/(.+?)/(feed|rdf|rss|rss2|atom)/?$,index.php?category_name=$matches[1]&feed=$matches[2],category
category/(.+?)/embed/?$,index.php?category_name=$matches[1]&embed=true,category