wp post
Manages posts, content, and meta.
| Commands | Description |
|---|---|
| wp post create | Creates a new post. |
| wp post update | Updates one or more existing posts. |
| wp post edit | Launches system editor to edit post content. |
| wp post get | Gets details about a post. |
| wp post delete | Deletes an existing post. |
| wp post list | Gets a list of posts. |
| wp post generate | Generates some posts. |
| wp post exists | Verifies whether a post exists. |
| wp post meta list | List all metadata associated with an object. |
| wp post meta get | Get meta field value. |
| wp post meta delete | Delete a meta field. |
| wp post meta add | Add a meta field. |
| wp post meta update | Update a meta field. |
| wp post meta pluck | Get a nested value from a meta field. |
| wp post meta patch | Update a nested value for a meta field. |
| wp post term list | List all terms associated with an object. |
| wp post term remove | Remove a term from an object. |
| wp post term add | Add a term to an object. |
| wp post term set | Set object terms. |
Posts
# Create a new post. $ wp post create --post_type=post --post_title='A sample post' Success: Created post 123. # Update an existing post. $ wp post update 123 --post_status=draft Success: Updated post 123. # Delete an existing post. $ wp post delete 123 Success: Trashed post 123.
Posts metadata
# Set post meta $ wp post meta set 123 _wp_page_template about.php Success: Updated custom field '_wp_page_template'. # Get post meta $ wp post meta get 123 _wp_page_template about.php # Update post meta $ wp post meta update 123 _wp_page_template contact.php Success: Updated custom field '_wp_page_template'. # Delete post meta $ wp post meta delete 123 _wp_page_template Success: Deleted custom field.
Posts terms
# Set post terms $ wp post term set 123 test category Success: Set terms.
Source code of the commands
wp post create
Creates a new post.
Usage
wp post create [--post_author={post_author}] [--post_date={post_date}]
[--post_date_gmt={post_date_gmt}] [--post_content={post_content}]
[--post_content_filtered={post_content_filtered}] [--post_title={post_title}]
[--post_excerpt={post_excerpt}] [--post_status={post_status}] [--post_type={post_type}]
[--comment_status={comment_status}] [--ping_status={ping_status}] [--post_password={post_password}]
[--post_name={post_name}] [--from-post={post_id}] [--to_ping={to_ping}] [--pinged={pinged}]
[--post_modified={post_modified}] [--post_modified_gmt={post_modified_gmt}]
[--post_parent={post_parent}] [--menu_order={menu_order}] [--post_mime_type={post_mime_type}]
[--guid={guid}] [--post_category={post_category}] [--tags_input={tags_input}]
[--tax_input={tax_input}] [--meta_input={meta_input}] [{file}] [--{field}={value}] [--edit]
[--porcelain]
You can specify global options and the following:
[--post_author={post_author}]- The ID of the user who added the post. Default is the current user ID.
[--post_date={post_date}]- The date of the post. Default is the current time.
[--post_date_gmt={post_date_gmt}]- The date of the post in the GMT timezone. Default is the value of $post_date.
[--post_content={post_content}]- The post content. Default empty.
[--post_content_filtered={post_content_filtered}]- The filtered post content. Default empty.
[--post_title={post_title}]- The post title. Default empty.
[--post_excerpt={post_excerpt}]- The post excerpt. Default empty.
[--post_status={post_status}]- The post status. Default 'draft'.
[--post_type={post_type}]- The post type. Default 'post'.
[--comment_status={comment_status}]- Whether the post can accept comments. Accepts 'open' or 'closed'. Default is the value of 'default_comment_status' option.
[--ping_status={ping_status}]- Whether the post can accept pings. Accepts 'open' or 'closed'. Default is the value of 'default_ping_status' option.
[--post_password={post_password}]- The password to access the post. Default empty.
[--post_name={post_name}]- The post name. Default is the sanitized post title when creating a new post.
[--from-post={post_id}]- Post id of a post to be duplicated.
[--to_ping={to_ping}]- Space or carriage return-separated list of URLs to ping. Default empty.
[--pinged={pinged}]- Space or carriage return-separated list of URLs that have been pinged. Default empty.
[--post_modified={post_modified}]- The date when the post was last modified. Default is the current time.
[--post_modified_gmt={post_modified_gmt}]- The date when the post was last modified in the GMT timezone. Default is the current time.
[--post_parent={post_parent}]- Set this for the post it belongs to, if any. Default 0.
[--menu_order={menu_order}]- The order the post should be displayed in. Default 0.
[--post_mime_type={post_mime_type}]- The mime type of the post. Default empty.
[--guid={guid}]- Global Unique ID for referencing the post. Default empty.
[--post_category={post_category}]- Array of category names, slugs, or IDs. Defaults to value of the 'default_category' option.
[--tags_input={tags_input}]- Array of tag names, slugs, or IDs. Default empty.
[--tax_input={tax_input}]- Array of taxonomy terms keyed by their taxonomy name. Default empty.
[--meta_input={meta_input}]- Array in JSON format of post meta values keyed by their post meta key. Default empty.
[{file}]- Read post content from
. If this value is present, the --post_contentargument will be ignored.
Passing - as the filename will cause post content to be read from STDIN.
[--{field}={value}]- Associative args for the new post. See wp_insert_post().
[--edit]- Immediately open system's editor to write or edit post content.
If content is read from a file, from STDIN, or from the --post_content argument, that text will be loaded into the editor.
[--porcelain]- Output just the new post id.
Examples
# Create post and schedule for future $ wp post create --post_type=page --post_title='A future post' --post_status=future --post_date='2020-12-01 07:00:00' Success: Created post 1921.
# Create post with content from given file $ wp post create ./post-content.txt --post_category=201,345 --post_title='Post from file' Success: Created post 1922.
# Create a post with multiple meta values.
$ wp post create --post_title='A post' --post_content='Just a small post.' --meta_input='{"key1":"value1","key2":"value2"}'
Success: Created post 1923.
# Create a duplicate post from existing posts. $ wp post create --from-post=123 --post_title='Different Title' Success: Created post 2350.
wp post update
Updates one or more existing posts.
Usage
wp post update {id}... [--post_author={post_author}] [--post_date={post_date}]
[--post_date_gmt={post_date_gmt}] [--post_content={post_content}]
[--post_content_filtered={post_content_filtered}] [--post_title={post_title}]
[--post_excerpt={post_excerpt}] [--post_status={post_status}] [--post_type={post_type}]
[--comment_status={comment_status}] [--ping_status={ping_status}] [--post_password={post_password}]
[--post_name={post_name}] [--to_ping={to_ping}] [--pinged={pinged}]
[--post_modified={post_modified}] [--post_modified_gmt={post_modified_gmt}]
[--post_parent={post_parent}] [--menu_order={menu_order}] [--post_mime_type={post_mime_type}]
[--guid={guid}] [--post_category={post_category}] [--tags_input={tags_input}]
[--tax_input={tax_input}] [--meta_input={meta_input}] [{file}] --{field}={value}
[--defer-term-counting]
You can specify global options and the following:
{id}...- One or more IDs of posts to update.
[--post_author={post_author}]- The ID of the user who added the post. Default is the current user ID.
[--post_date={post_date}]- The date of the post. Default is the current time.
[--post_date_gmt={post_date_gmt}]- The date of the post in the GMT timezone. Default is the value of $post_date.
[--post_content={post_content}]- The post content. Default empty.
[--post_content_filtered={post_content_filtered}]- The filtered post content. Default empty.
[--post_title={post_title}]- The post title. Default empty.
[--post_excerpt={post_excerpt}]- The post excerpt. Default empty.
[--post_status={post_status}]- The post status. Default 'draft'.
[--post_type={post_type}]- The post type. Default 'post'.
[--comment_status={comment_status}]- Whether the post can accept comments. Accepts 'open' or 'closed'. Default is the value of 'default_comment_status' option.
[--ping_status={ping_status}]- Whether the post can accept pings. Accepts 'open' or 'closed'. Default is the value of 'default_ping_status' option.
[--post_password={post_password}]- The password to access the post. Default empty.
[--post_name={post_name}]- The post name. Default is the sanitized post title when creating a new post.
[--to_ping={to_ping}]- Space or carriage return-separated list of URLs to ping. Default empty.
[--pinged={pinged}]- Space or carriage return-separated list of URLs that have been pinged. Default empty.
[--post_modified={post_modified}]- The date when the post was last modified. Default is the current time.
[--post_modified_gmt={post_modified_gmt}]- The date when the post was last modified in the GMT timezone. Default is the current time.
[--post_parent={post_parent}]- Set this for the post it belongs to, if any. Default 0.
[--menu_order={menu_order}]- The order the post should be displayed in. Default 0.
[--post_mime_type={post_mime_type}]- The mime type of the post. Default empty.
[--guid={guid}]- Global Unique ID for referencing the post. Default empty.
[--post_category={post_category}]- Array of category names, slugs, or IDs. Defaults to value of the 'default_category' option.
[--tags_input={tags_input}]- Array of tag names, slugs, or IDs. Default empty.
[--tax_input={tax_input}]- Array of taxonomy terms keyed by their taxonomy name. Default empty.
[--meta_input={meta_input}]- Array in JSON format of post meta values keyed by their post meta key. Default empty.
[{file}]- Read post content from
. If this value is present, the --post_contentargument will be ignored.
Passing - as the filename will cause post content to be read from STDIN.
--{field}={value}- One or more fields to update. See wp_insert_post().
[--defer-term-counting]- Recalculate term count in batch, for a performance boost.
Examples
$ wp post update 123 --post_name=something --post_status=draft Success: Updated post 123.
# Update a post with multiple meta values.
$ wp post update 123 --meta_input='{"key1":"value1","key2":"value2"}'
Success: Updated post 123.
wp post edit
Launches system editor to edit post content.
Usage
wp post edit {id}
You can specify global options and the following:
{id}- The ID of the post to edit.
Examples
# Launch system editor to edit post $ wp post edit 123
wp post get
Gets details about a post.
Usage
wp post get {id} [--field={field}] [--fields={fields}] [--format={format}]
You can specify global options and the following:
{id}- The ID of the post to get.
[--field={field}]- Instead of returning the whole post, returns the value of a single field.
[--fields={fields}]- Limit the output to specific fields. Defaults to all fields.
[--format={format}]Render output in a particular format.
Default: table
Can be:- table
- csv
- json
- yaml
Examples
# Save the post content to a file $ wp post get 123 --field=content > file.txt
wp post delete
Deletes an existing post.
Usage
wp post delete {id}... [--force] [--defer-term-counting]
You can specify global options and the following:
{id}...- One or more IDs of posts to delete.
[--force]- Skip the trash bin.
[--defer-term-counting]- Recalculate term count in batch, for a performance boost.
Examples
# Delete post skipping trash $ wp post delete 123 --force Success: Deleted post 123.
# Delete post skipping trash $ wp post delete 123 124 --force Success: Deleted post 123. Success: Deleted post 124.
# Delete all pages $ wp post delete $(wp post list --post_type='page' --format=ids) Success: Trashed post 1164. Success: Trashed post 1186.
# Delete all posts in the trash $ wp post delete $(wp post list --post_status=trash --format=ids) Success: Deleted post 1268. Success: Deleted post 1294.
wp post list
Gets a list of posts.
Display posts based on all arguments supported by WP_Query().
Usage
wp post list [--{field}={value}] [--field={field}] [--fields={fields}] [--format={format}]
You can specify global options and the following:
[--{field}={value}]- One or more args to pass to WP_Query.
[--field={field}]- Prints the value of a single field for each post.
[--fields={fields}]- Limit the output to specific object fields.
[--format={format}]Render output in a particular format.
Default: table
Can be:- table
- csv
- ids
- json
- count
- yaml
Available fields
These fields will be displayed by default for each post:
- ID
- post_title
- post_name
- post_date
- post_status
These fields are optionally available:
- post_author
- post_date_gmt
- post_content
- post_excerpt
- comment_status
- ping_status
- post_password
- to_ping
- pinged
- post_modified
- post_modified_gmt
- post_content_filtered
- post_parent
- guid
- menu_order
- post_type
- post_mime_type
- comment_count
- filter
- url
Examples
# List post $ wp post list --field=ID 568 829 1329 1695
# List posts in JSON
$ wp post list --post_type=post --posts_per_page=5 --format=json
[{"ID":1,"post_title":"Hello world!","post_name":"hello-world","post_date":"2015-06-20 09:00:10","post_status":"publish"},{"ID":1178,"post_title":"Markup: HTML Tags and Formatting","post_name":"markup-html-tags-and-formatting","post_date":"2013-01-11 20:22:19","post_status":"draft"}]
# List all pages $ wp post list --post_type=page --fields=post_title,post_status +-------------+-------------+ | post_title | post_status | +-------------+-------------+ | Sample Page | publish | +-------------+-------------+
# List ids of all pages and posts $ wp post list --post_type=page,post --format=ids 15 25 34 37 198
# List given posts $ wp post list --post__in=1,3 +----+--------------+-------------+---------------------+-------------+ | ID | post_title | post_name | post_date | post_status | +----+--------------+-------------+---------------------+-------------+ | 3 | Lorem Ipsum | lorem-ipsum | 2016-06-01 14:34:36 | publish | | 1 | Hello world! | hello-world | 2016-06-01 14:31:12 | publish | +----+--------------+-------------+---------------------+-------------+
wp post generate
Generates some posts.
Creates a specified number of new posts with dummy data.
Usage
wp post generate [--count={number}] [--post_type={type}] [--post_status={status}]
[--post_title={post_title}] [--post_author={login}] [--post_date={yyyy-mm-dd-hh-ii-ss}]
[--post_date_gmt={yyyy-mm-dd-hh-ii-ss}] [--post_content] [--max_depth={number}] [--format={format}]
You can specify global options and the following:
[--count={number}]- How many posts to generate?
Default: 100 [--post_type={type}]- The type of the generated posts.
Default: post [--post_status={status}]- The status of the generated posts.
Default: publish [--post_title={post_title}]- The post title.
default: [--post_author={login}]- The author of the generated posts.
default: [--post_date={yyyy-mm-dd-hh-ii-ss}]- The date of the generated posts. Default: current date
[--post_date_gmt={yyyy-mm-dd-hh-ii-ss}]- The GMT date of the generated posts. Default: value of post_date (or current date if it's not set)
[--post_content]- If set, the command reads the post_content from STDIN.
[--max_depth={number}]- For hierarchical post types, generate child posts down to a certain depth.
Default: 1 [--format={format}]Render output in a particular format.
Default: progress
Can be:- progress
- ids
Examples
# Generate posts. $ wp post generate --count=10 --post_type=page --post_date=1999-01-04 Generating posts 100% [================================================] 0:01 / 0:04
# Generate posts with fetched content. $ curl http://loripsum.net/api/5 | wp post generate --post_content --count=10 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2509 100 2509 0 0 616 0 0:00:04 0:00:04 --:--:-- 616 Generating posts 100% [================================================] 0:01 / 0:04
# Add meta to every generated posts. $ wp post generate --format=ids | xargs -d ' ' -I % wp post meta add % foo bar Success: Added custom field. Success: Added custom field. Success: Added custom field.
wp post exists
Verifies whether a post exists.
Displays a success message if the post does exist.
Usage
wp post exists {id}
You can specify global options and the following:
{id}- The ID of the post to check.
Examples
# The post exists. $ wp post exists 1 Success: Post with ID 1337 exists. $ echo $? 0
# The post does not exist. $ wp post exists 10000 $ echo $? 1
wp post meta list
List all metadata associated with an object.
Usage
wp post meta list {id} [--keys={keys}] [--fields={fields}] [--format={format}] [--orderby={fields}]
[--order={order}]
You can specify global options and the following:
{id}- ID for the object.
[--keys={keys}]- Limit output to metadata of specific keys.
[--fields={fields}]- Limit the output to specific row fields. Defaults to id,meta_key,meta_value.
[--format={format}]Render output in a particular format.
Default: table
Can be:- table
- csv
- json
- yaml
- count
[--orderby={fields}]Set orderby which field.
Default: id
Can be:- id
- meta_key
- meta_value
[--order={order}]Set ascending or descending order.
Default: asc
Can be:- asc
- desc
wp post meta get
Get meta field value.
Usage
wp post meta get {id} {key} [--format={format}]
You can specify global options and the following:
{id}- The ID of the object.
{key}- The name of the meta field to get.
[--format={format}]Get value in a particular format.
Default: var_export
Can be:- var_export
- json
- yaml
wp post meta delete
Delete a meta field.
Usage
wp post meta delete {id} [{key}] [{value}] [--all]
You can specify global options and the following:
{id}- The ID of the object.
[{key}]- The name of the meta field to delete.
[{value}]- The value to delete. If omitted, all rows with key will deleted.
[--all]- Delete all meta for the object.
wp post meta add
Add a meta field.
Usage
wp post meta add {id} {key} [{value}] [--format={format}]
You can specify global options and the following:
{id}- The ID of the object.
{key}- The name of the meta field to create.
[{value}]- The value of the meta field. If omitted, the value is read from STDIN.
[--format={format}]The serialization format for the value.
Default: plaintext
Can be:- plaintext
- json
wp post meta update
Update a meta field.
Usage
wp post meta update {id} {key} [{value}] [--format={format}]
You can specify global options and the following:
{id}- The ID of the object.
{key}- The name of the meta field to update.
[{value}]- The new value. If omitted, the value is read from STDIN.
[--format={format}]The serialization format for the value.
Default: plaintext
Can be:- plaintext
- json
wp post meta pluck
Get a nested value from a meta field.
Usage
wp post meta pluck {id} {key} {key-path}... [--format={format}]
You can specify global options and the following:
{id}- The ID of the object.
{key}- The name of the meta field to get.
{key-path}...- The name(s) of the keys within the value to locate the value to pluck.
[--format={format}]- The output format of the value.
--- Default: plaintext
Can be:
- plaintext
- json
- yaml
wp post meta patch
Update a nested value for a meta field.
Usage
wp post meta patch {action} {id} {key} {key-path}... [{value}] [--format={format}]
You can specify global options and the following:
{action}Patch action to perform.
Can be:
- insert
- update
- delete
{id}- The ID of the object.
{key}- The name of the meta field to update.
{key-path}...- The name(s) of the keys within the value to locate the value to patch.
[{value}]- The new value. If omitted, the value is read from STDIN.
[--format={format}]The serialization format for the value.
Default: plaintext
Can be:- plaintext
- json
wp post term list
List all terms associated with an object.
Usage
wp post term list {id} {taxonomy}... [--field={field}] [--fields={fields}] [--format={format}]
{id}- ID for the object.
{taxonomy}...- One or more taxonomies to list.
[--field={field}]- Prints the value of a single field for each term.
[--fields={fields}]- Limit the output to specific row fields.
[--format={format}]Render output in a particular format.
Default: table
Can be:- table
- csv
- json
- yaml
- count
- ids
Available fields
These fields will be displayed by default for each term:
- term_id
- name
- slug
- taxonomy
These fields are optionally available:
- term_taxonomy_id
- description
- term_group
- parent
- count
wp post term remove
Remove a term from an object.
Usage
wp post term remove {id} {taxonomy} [{term}...] [--by={field}] [--all]
You can specify global options and the following:
{id}- The ID of the object.
{taxonomy}- The name of the term's taxonomy.
[{term}...]- The name of the term or terms to be removed from the object.
[--by={field}]Explicitly handle the term value as a slug or id.
Can be:
- slug
- id
[--all]- Remove all terms from the object.
wp post term add
Add a term to an object.
Append the term to the existing set of terms on the object.
Usage
wp post term add {id} {taxonomy} {term}... [--by={field}]
{id}- The ID of the object.
{taxonomy}- The name of the taxonomy type to be added.
{term}...- The slug of the term or terms to be added.
[--by={field}]Explicitly handle the term value as a slug or id.
Can be:
- slug
- id
wp post term set
Set object terms.
Replaces existing terms on the object.
Usage
wp post term set {id} {taxonomy} {term}... [--by={field}]
{id}- The ID of the object.
{taxonomy}- The name of the taxonomy type to be updated.
{term}...- The slug of the term or terms to be updated.
[--by={field}]Explicitly handle the term value as a slug or id.
Can be:
- slug
- id