Getting Started with WP-CLI
-
Upload
christian-nolen -
Category
Technology
-
view
77 -
download
1
Transcript of Getting Started with WP-CLI
@cwpnolen @emagineusa@WordCampRI #WCRI
WordCamp Rhode Island
WP-CLIGETTING STARTED WITH
Who Am I?Christian Nolen
Technical Director for emagine @cwpnolen
@cwpnolen @emagineusa@WordCampRI #WCRI
http://www.emagine.com/careers/
We’re Hiring
@cwpnolen @emagineusa@WordCampRI #WCRI
@cwpnolen @emagineusa@WordCampRI #WCRI
What is WP-CLI?
@cwpnolen @emagineusa@WordCampRI #WCRI
1. UNIX-like environment (OS X, Linux, FreeBSD, Cygwin); limited support in Windows environment
2. PHP 5.3.29 or later 3. WordPress 3.7 or later
Requirements
@cwpnolen @emagineusa@WordCampRI #WCRI
InstallationManual Install
http://wp-cli.org/#installing
Third-Party Companies https://wp-cli.org/docs/hosting-companies/
Vagranthttps://github.com/Varying-Vagrant-Vagrants/VVV
@cwpnolen @emagineusa@WordCampRI #WCRI
Why Bother
@cwpnolen @emagineusa@WordCampRI #WCRI
Improved productivity means less human sweat, not more.
Henry Ford
@cwpnolen @emagineusa@WordCampRI #WCRI
65%The amount of time I save setting up WordPress
compared to the 5 Minute Install
@cwpnolen @emagineusa@WordCampRI #WCRI
wp command subcommand --options --paramaters
Syntax
@cwpnolen @emagineusa@WordCampRI #WCRI
wpwp-cli
@cwpnolen @emagineusa@WordCampRI #WCRI
commandthe section of WordPress you want to work with
@cwpnolen @emagineusa@WordCampRI #WCRI
subcommandthe action we want to take on the section
@cwpnolen @emagineusa@WordCampRI #WCRI
--optionsdefinable options or settings for your subcommand
@cwpnolen @emagineusa@WordCampRI #WCRI
--parametersglobal options that can be assigned to any command
@cwpnolen @emagineusa@WordCampRI #WCRI
Setup WordPress
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core downloaddownload and unpack the latest version of WordPress
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core download --version=4.6 you can also specify the version of WordPress you want to download
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core download --locale=nl_NL you can also specify the language for WordPress
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core config --prompt creates wp-config.php
@cwpnolen @emagineusa@WordCampRI #WCRI
wp db create creates your database specified in wp-config is it doesn’t exist
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core install --prompt populates your database with the WordPress tables using the supplied data
@cwpnolen @emagineusa@WordCampRI #WCRI
Working with Plugins
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin list displays a table list all your installed plugins
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin delete hello deletes the Hello Dolly plugin
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin install jetpack installs the Jetpack plugin
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin activate jetpack activates the Jetpack plugin
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin install wp-super-cache --activate installs and activates the WP Super Cache plugin
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin install buddypress woocommerce install multiple plugins
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin install bbpress —version=2.5.9 installs version 2.5.9 of bbPress
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin update bbpress updates the bbPress plugin to the latest version
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin --all updates all plugins
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin search 'Yoast SEO' searches wordpress.org plugin repository for 'Yoast Seo'
and returns a table list of results
@cwpnolen @emagineusa@WordCampRI #WCRI
wp plugin toggle bbpress activates bbpress if the plugin is currently inactive
deactivates the plugin if it is currently active
@cwpnolen @emagineusa@WordCampRI #WCRI
Working with Themes
@cwpnolen @emagineusa@WordCampRI #WCRI
wp theme list displays a table list all available themes
@cwpnolen @emagineusa@WordCampRI #WCRI
wp theme search 'travel blog' searches wordpress.org plugin repository for 'travel blog'
and returns a table list of relevant themes
@cwpnolen @emagineusa@WordCampRI #WCRI
wp theme search 'travel blog' --fields=name,slug,rating,num_ratings
returns the same table list of relevant themes but includes a column for the number of ratings for the theme
@cwpnolen @emagineusa@WordCampRI #WCRI
wp theme search 'travel blog' --per-page=50
updates the number of items returns from 10 to 50
@cwpnolen @emagineusa@WordCampRI #WCRI
wp theme install nisarg --activate installs and activates the Nisarg theme
@cwpnolen @emagineusa@WordCampRI #WCRI
wp theme delete twentysixteen deletes the twentysixteen theme
(themes can only be deleted when they are not active)
@cwpnolen @emagineusa@WordCampRI #WCRI
Working with Posts
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post list displays a table list all available themes
(by default only lists items from the 'post' post type)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post list displays a table list of posts
(by default only lists items from the 'post' post type)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post list --post_type=post,page displays a table list of posts narrowed by the 'post' and 'page' post type
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post create --post_type=page --post_title= 'Sample Page' --post_name=sample-page-one
--post_status=publish --post_content= '<p>Some test.</p>'
creates a post of the 'page' post type defining the page title, slug, status and content
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post generate --count=100creates 100 posts for the 'post' post type
(generate defaults to the 'post' post type and 'published' post_status)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post delete 3deletes the post with the post ID of '3'
(the deleted post is moved to the trash)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post delete 4 --forcepermanently deletes the post with the post ID of '4'
(skips moving the post to the trash)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post delete 5 6deletes the post with the post ID of '4' and '5'
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post delete $(wp post list --format=ids)deletes all posts of the 'post' post type
(--format=ids returns a list of post IDs space delimited)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp post delete $(wp post list --post_status=trash --format=ids)
empties the trash for posts that belong to the 'post' post type
@cwpnolen @emagineusa@WordCampRI #WCRI
Generate Post Content
@cwpnolen @emagineusa@WordCampRI #WCRI
curl loripsum.net/api/5/short/headers/ul/bq | wp post generate --post_content --count=5
retrieves dummy html markup and and applies it to the post_content for each generated post
@cwpnolen @emagineusa@WordCampRI #WCRI
for n in {1..5}; do curl loripsum.net/api/5/short/headers/ul/bq
| wp post generate --post_content --count=1; done uses a for loop to get our dummy html markup to be used for generated post content
using the for loop allows the content being generated to be dynamic(note: the count option needs to be set to 1. the loop is dictating the count)
@cwpnolen @emagineusa@WordCampRI #WCRI
Export / Import
@cwpnolen @emagineusa@WordCampRI #WCRI
wp export --dir=../exports all posts to the parent directory you are currently in
@cwpnolen @emagineusa@WordCampRI #WCRI
wp export --dir=../ --post_type=pageexports all post in the 'page' post type
to the parent directory you are currently in
@cwpnolen @emagineusa@WordCampRI #WCRI
wp import ../<filename>imports the data found in the export file
located in the parent directory
@cwpnolen @emagineusa@WordCampRI #WCRI
The Database
@cwpnolen @emagineusa@WordCampRI #WCRI
wp db export ../my-export.sqlexports your WordPress database to the parent directory
with the file name my-export.sql
@cwpnolen @emagineusa@WordCampRI #WCRI
wp db import ../my-export.sqlimports the exported WordPress database found in the parent directory
with the file name my-export.sql
@cwpnolen @emagineusa@WordCampRI #WCRI
Search and Replace
@cwpnolen @emagineusa@WordCampRI #WCRI
wp search-replace old-domain.com new-domain.comperforms a serialized search and replace on the database
changes old-domain.com to new-domain.com (no plugin or third-party library needed)
@cwpnolen @emagineusa@WordCampRI #WCRI
Working with Media
@cwpnolen @emagineusa@WordCampRI #WCRI
wp media import ../sample-files/*imports all files found in the 'sample-files' folder
found in the parent directory
@cwpnolen @emagineusa@WordCampRI #WCRI
wp media import http://www.emagine.com/assets/logo.png
imports an image via the assets URL
@cwpnolen @emagineusa@WordCampRI #WCRI
wp media regenerateregenerates all thumbnails created by WordPress
(no additional plugin needed)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp media regenerate <attachment_id>regenerates all thumbnails for a specific media item
(no additional plugin needed)
@cwpnolen @emagineusa@WordCampRI #WCRI
Working with Core
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core check-updatechecks if there is an update available for your
current version of WordPress
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core updateupdates WordPress to the latest version
(if an update is available)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core update-dbupdates the WordPress database if needed
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core verify-checksumsverifies that the core files in your WordPress install match wordpress.org's
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core multisite-convertchanges a single site install to a multisite install
(defaults to sub-directories)
@cwpnolen @emagineusa@WordCampRI #WCRI
wp core multisite-convert --subdomainschanges a single site install to a sub-domain multisite install
@cwpnolen @emagineusa@WordCampRI #WCRI
Resourceshttp://wp-cli.org/docs/
http://wp-cli.org/commands/ https://wp-cli.org/docs/external-resources/
@cwpnolen @emagineusa@WordCampRI #WCRI
Don’t Fear the Command Line
@cwpnolen @emagineusa@WordCampRI #WCRI
Whenever you are asked if you can do a job, tell 'em, “Certainly I can!”
Then get busy and find out how to do it.
Theodore Roosevelt
@cwpnolen @emagineusa@WordCampRI #WCRI
Thank You