I often reference this list of useful WordPress CLI commands to enhance or clean up my sites. Please be careful and make backups.
How to install WordPress CLI. Here you can checkout the commands.
List:
- Syncing High-Performance Order Storage
- Recovering WordPress after a fatal error from plugin update
- Cleaning Woocommerce trash products
- Cleaning unattached jpegs from the WordPress library
- Creating Dummy content
- Deleting spam comments
- Truly stopping comments
- Cleaning your website
- Checking the config file
- Checking the database size
- Running core update
- Plugins manipulation
- Reseting User Password
- Database Manipulations
wp wc cot sync
wp plugin deactivate plugin-says-no --skip-plugins
wp post delete $(wp post list --post_type=product --post_status=trash --format=ids) --force
for id in $(wp db query "SELECT ID FROM wp_posts where post_type='attachment' AND post_parent=0 AND post_mime_type='image/jpeg'" --silent --skip-column-names)
do
wp post delete --force $id
done
Cleaning unattached jpegs from the WordPress library in batches. You can change the batch size by changing the value of the batch_size
variable.
# !/bin/bash
# Fetch all IDs in one command and store them in an array
ids=($(wp db query "SELECT ID FROM wp90_posts WHERE post_type='attachment' AND post_parent=0 AND post_mime_type='image/jpeg'" --silent --skip-column-names))
# Function to delete posts in batches
delete_in_batches() {
local batch=("$@")
if ! wp post delete --force "${batch[@]}"; then
echo "Error: Failed to delete one or more posts in this batch."
exit 1
fi
}
# Batch size
batch_size=500
# Total number of IDs
total_ids=${#ids[@]}
# Process IDs in batches of 500
for ((i=0; i<total_ids; i+=batch_size)); do
batch=("${ids[@]:i:batch_size}")
echo "Deleting batch starting with ID ${batch[0]}"
delete_in_batches "T${batch[@]}"
done
echo "Deletion process completed."
Using scripts/batch-delete-unattached-jpegs.sh it is nearly 1.5x faster than the previous command. Don't forget to make the script executable by running chmod +x scripts/batch-delete-unattached-jpegs.sh
.
wp post generate --count=10
wp comment list --status=spam --format=ids | xargs wp comment delete --force
wp option update default_comment_status closed
wp option update default_ping_status closed
wp db query "UPDATE wp_posts SET comment_status='closed' WHERE post_status='publish';"
wp db query "UPDATE wp_posts SET ping_status='closed' WHERE post_status='publish';"
wp site empty
wp config get
wp db size --tables
wp core update
wp plugin list
wp plugin install
wp plugin update plugin-name
wp plugin deactivate plugin-name
wp plugin delete plugin-name
wp user update user@example.com --user_pass=new-password
wp db optimize
wp db repair
wp db export name.sql