SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
WP-CLI –
Super Admin Level
Tips and Tricks
JONATHAN PERLMAN
@JPURPLEMAN
WWW.JPURPLEMAN.CA/WCOTTAWA2016
Jonathan Perlman
14 years using PHP & MySql as a web developer at Dawson College
9 years teaching the web and Microsoft Office for Dawson College
6 years using WordPress
2 WordCamp talks
I’m not a Linux unicorn
6/18/2016 WORDCAMP OTTAWA 2016
What you need to know…
This works on Linux computers / servers.
Might work on Mac. Not tested on Mac.
Won't work on Windows.
Shared and managed hosts don't allow you to install WP-CLI
We won't be talking about WP-CLI "Packages“
All WordPress code samples are located in the repo
https://github.com/jpurpleman/WordPress-Stuff
6/18/2016 WORDCAMP OTTAWA 2016
WP-CLI Requirements
UNIX-like environment (OS X, Linux, FreeBSD, Cygwin);
limited support in Windows environment
PHP 5.3.29 or later
WordPress 3.7 or later
WordPress 4.5 or later requires WP-CLI version 0.23.0
6/18/2016 WORDCAMP OTTAWA 2016
The way to level up …
Learn bash!
6/18/2016 WORDCAMP OTTAWA 2016
hello-world.sh
#!/bin/bash
echo 'Hello World!'
bash hello-world.sh
chmod +x hello-world.sh
./hello-world.sh
6/18/2016 WORDCAMP OTTAWA 2016
variables.sh
#!/bin/bash
error
X=hello world
X = "hello world"
OK
X="hello world"
#output
echo $X
6/18/2016 WORDCAMP OTTAWA 2016
conditionals.sh
#!/bin/bash
city=$1
if [ "$city" == "Ottawa" ]
then
echo "What a great city"
else
echo "Hello, you're in WordCamp $city!"
fi
6/18/2016 WORDCAMP OTTAWA 2016
loops-and-arrays.sh
#!/bin/bash
servers=( 'web1.example.com' 'web2.example.com' )
for server in "${servers[@]}"; do
echo $server
done
6/18/2016 WORDCAMP OTTAWA 2016
.bashrc & scripts
HTTPS://GITHUB.COM/JPURPLEMAN/WORDPRESS-STUFF
6/18/2016 WORDCAMP OTTAWA 2016
.bashrc & scripts
You can run the custom
command in any folder
Will work for only your user
account
Better if you have more than one
server
You have to copy it to work in a
specific directory
You can create reusable scripts
You can create scripts the run
scripts
6/18/2016 WORDCAMP OTTAWA 2016
Script – wp-cli-install.sh
#!/bin/bash
servers=( 'web1.example.com' 'web2.example.com‘ )
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
for server in "${servers[@]}"; do
echo $server
scp ./wp-cli.phar user@$server:
ssh user@$server "chmod +x wp-cli.phar"
ssh user@$server "sudo mv wp-cli.phar /usr/local/bin/wp"
ssh user@$server "/usr/local/bin/wp --info"
done
rm ./wp-cli.phar
6/18/2016 WORDCAMP OTTAWA 2016
.bashrc - Get WordPress Salts
alias wordpress-salt='wget
https://api.wordpress.org/secret-key/1.1/salt/ -qO-'
Normally one line, not multiple…
6/18/2016 WORDCAMP OTTAWA 2016
.bashrc - Update WordPress
alias wordpress-update-all='wp core update &&
wp core update-db --network &&
wp plugin update --all &&
wp theme update --all '
Normally one line, not multiple…
6/18/2016 WORDCAMP OTTAWA 2016
.bashrc – Delete Sample Page
alias wordpress-delete-sample-page=‘wp post delete $(
wp post list
--post_type=page
--posts_per_page=1
--post_status=publish
--pagename="sample-page"
--field=ID
--format=ids
)’
6/18/2016 WORDCAMP OTTAWA 2016
.bashrc - Remove Default Widgets
alias wordpress-remove-default-widgets='
wp widget delete search-2 &&
wp widget delete recent-posts-2 &&
wp widget delete recent-comments-2 &&
wp widget delete archives-2 &&
wp widget delete categories-2 &&
wp widget delete meta-2'
Normally one line, not multiple…
6/18/2016 WORDCAMP OTTAWA 2016
Script - see-option-on-all-sites.sh
#!/bin/bash
for url in $( wp site list --field=url --url=http://site.com | sort –u )
do
echo $url
wp option get blogname
done
6/18/2016 WORDCAMP OTTAWA 2016
see-all-sites-with-gravity-forms.sh
#!/bin/bash
for blog_id in $(wp site list --field=blog_id --url=http://site.com | sort -u )
do
echo $blog_id
wp db query "select count(id) from wp_${blog_id}_rg_form"
done
6/18/2016 WORDCAMP OTTAWA 2016
Script - create-pages-in-bluk.sh ( 1 )
userID=1
pages=( 'Home' 'About' 'Contact Us' )
for page in "${pages[@]}"; do
wp post create
--post_type=page
--post_title="$page"
--post_status=publish
--post_author=$userID
--porcelain
echo "wp post create $page"
done
6/18/2016 WORDCAMP OTTAWA 2016
Script - create-pages-in-bluk.sh ( 2 )
wp menu create "Menu" --quiet
export IFS=" "
for pageID in $( wp post list
--order="ASC"
--orderby="ID"
--post_type=page
--post_status=publish
--posts_per_page=-1
--field=ID
--format=ids ); do
wp menu item add-post menu $pageID --quiet
done
wp menu location assign menu primary
6/18/2016 WORDCAMP OTTAWA 2016
Now to the real
timesavers!
6/18/2016 WORDCAMP OTTAWA 2016
Resulting git log – 14 commits
123438b 2016-06-16 Jonathan Perlman Adding plugin: WordPress Importer at version 0.6.2
449e092 2016-06-16 Jonathan Perlman Updating plugin: Print Friendly and PDF to version 3.4.6
b1d983a 2016-06-16 Jonathan Perlman Updating plugin: WooThemes Helper to version 1.6.2
8d2d7e3 2016-06-16 Jonathan Perlman Updating plugin: WP Migrate DB Pro Media Files to version 1.4.4
ce0181e 2016-06-16 Jonathan Perlman Updating plugin: WP Migrate DB Pro to version 1.6
3a37bd6 2016-06-16 Jonathan Perlman Updating plugin: Gravity Forms + Custom Post Types to version 3.1.3
91e2560 2016-06-16 Jonathan Perlman Updating plugin: jQuery Responsive Select Menu to version 1.5.0
83af679 2016-06-16 Jonathan Perlman Updating plugin: Gravity Forms to version 1.9.19
bbaa123 2016-06-16 Jonathan Perlman Adding plugin: Gravity Forms Advanced File Uploader at version 1.4
41b2ae1 2016-06-16 Jonathan Perlman Updating plugin: Google Analytics by MonsterInsights to version 5.5
81eac9d 2016-06-16 Jonathan Perlman Updating plugin: Custom Post Type UI to version 1.3.5
fbcc677 2016-06-16 Jonathan Perlman Updating plugin: Basic Google Maps Placemarks to version 1.10.6
c5bdb6c 2016-06-16 Jonathan Perlman Updating plugin: Advanced Custom Fields to version 4.4.7
476c404 2016-06-16 Jonathan Perlman Updating plugin: Accordion Shortcodes to version 2.3.0
6/18/2016 WORDCAMP OTTAWA 2016
.bashrc – git-wp-commit-object ( 1 )
Go into a plugin or theme folder
Get the current directory name
Check to see if we're in a plugin or theme folder
Convert "plugins" to plugin or "themes" to theme
Get details about the WordPress object we want to commit
Get the title of the plugin or theme we're committing
Get the version of the plugin or theme we're committing
6/18/2016 WORDCAMP OTTAWA 2016
.bashrc – git-wp-commit-object ( 2 )
Check to see if it's in the repo already or not
Create parts of the commit message conditionally
Add all files to git that have been added or modified
Add all files to git that have been deleted or moved
Git commit! with appropriate message
Print that message
6/18/2016 WORDCAMP OTTAWA 2016
Script – wp-install.sh
If we're going to remove sites
Do mysql stuff to drop the db, revoke all and remove the user
Destroy the file system folder of the site
If we’re going to add sites
Loop proposed sites and make sure we don't overwrite any folder
Mysql stuff, drop db if exists, create database, grant privileges
Delete and Create the directory of the install path
Go into the install path
Download the WordPress core files
Create the wp-config file with our standard setup
Generate random 8 character password
Create database tables, and install WordPress
Dump out information to a text file for the teacher
Dump out information for the specific student
discourage search engines
delete sample page, and create homepage
set homepage as front page
set pretty urls
delete akismet and hello dolly
create a navigation bar
disable file edit in wordpress config
create .htaccess file
create the .htpasswd file
change ownership of the folder to apache
change file permissions
Calculate and send percent done to whiptail
Convert text file of info for teacher to pdf
Convert many student one page documents into one pdf
6/18/2016 WORDCAMP OTTAWA 2016
Resources
https://www.maketecheasier.com/write-linux-shell-scripts/
https://www.ltconsulting.co.uk/automated-wordpress-installation-with-bash-wp-cli/
https://deliciousbrains.com/automating-local-wordpress-site-setup-scripts/
https://www.smashingmagazine.com/2015/09/wordpress-management-with-wp-cli/
6/18/2016 WORDCAMP OTTAWA 2016
Thank you! Questions?
JONATHAN PERLMAN
@JPURPLEMAN
WWW.JPURPLEMAN.CA/WCOTTAWA2016

Más contenido relacionado

La actualidad más candente

Robust WordPress Installation using L2MP Stack
Robust WordPress Installation using L2MP StackRobust WordPress Installation using L2MP Stack
Robust WordPress Installation using L2MP StackAlex Bertens
 
Tipping the scale - Eyal Eizenberg - Wix
Tipping the scale - Eyal Eizenberg - WixTipping the scale - Eyal Eizenberg - Wix
Tipping the scale - Eyal Eizenberg - WixEyal Eizenberg
 
Tipping the Scale - Eyal Eizenberg
Tipping the Scale - Eyal EizenbergTipping the Scale - Eyal Eizenberg
Tipping the Scale - Eyal EizenbergWix Engineering
 
PHP, LAMP Stack & WordPress
PHP, LAMP Stack & WordPressPHP, LAMP Stack & WordPress
PHP, LAMP Stack & WordPressSuman Srinivasan
 
Challenges Building The New Joomla! Demo & Free Hosting Platform
Challenges Building The New Joomla! Demo & Free Hosting PlatformChallenges Building The New Joomla! Demo & Free Hosting Platform
Challenges Building The New Joomla! Demo & Free Hosting PlatformDaniel Kanchev
 
Scalable Web Architectures - Common Patterns & Approaches
Scalable Web Architectures - Common Patterns & ApproachesScalable Web Architectures - Common Patterns & Approaches
Scalable Web Architectures - Common Patterns & ApproachesCal Henderson
 
My Website is Old Enough to Vote - My Website Can Vote - Building Sites That ...
My Website is Old Enough to Vote - My Website Can Vote - Building Sites That ...My Website is Old Enough to Vote - My Website Can Vote - Building Sites That ...
My Website is Old Enough to Vote - My Website Can Vote - Building Sites That ...Kristine Howard
 
PDF Generation in Rails with Prawn and Prawn-to: John McCaffrey
PDF Generation in Rails with Prawn and Prawn-to: John McCaffreyPDF Generation in Rails with Prawn and Prawn-to: John McCaffrey
PDF Generation in Rails with Prawn and Prawn-to: John McCaffreyJohn McCaffrey
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsAchievers Tech
 
The Characteristics of a Successful SPA
The Characteristics of a Successful SPAThe Characteristics of a Successful SPA
The Characteristics of a Successful SPAGil Fink
 
Modern web application devlopment workflow
Modern web application devlopment workflowModern web application devlopment workflow
Modern web application devlopment workflowHamdi Hmidi
 
20130714 php matsuri - highly available php
20130714   php matsuri - highly available php20130714   php matsuri - highly available php
20130714 php matsuri - highly available phpGraham Weldon
 
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...John McCaffrey
 
Javascript - Getting started | DevCom ISITCom
Javascript - Getting started | DevCom ISITComJavascript - Getting started | DevCom ISITCom
Javascript - Getting started | DevCom ISITComHamdi Hmidi
 
10 step guide to convert HTML to Wordpress
10 step guide to convert HTML to Wordpress10 step guide to convert HTML to Wordpress
10 step guide to convert HTML to WordpressWordPrax Ltd.
 
Les Basiques - Web Développement HTML5, CSS3, JS et PHP
Les Basiques - Web  Développement HTML5, CSS3, JS et PHPLes Basiques - Web  Développement HTML5, CSS3, JS et PHP
Les Basiques - Web Développement HTML5, CSS3, JS et PHPHamdi Hmidi
 

La actualidad más candente (19)

Robust WordPress Installation using L2MP Stack
Robust WordPress Installation using L2MP StackRobust WordPress Installation using L2MP Stack
Robust WordPress Installation using L2MP Stack
 
Tipping the scale - Eyal Eizenberg - Wix
Tipping the scale - Eyal Eizenberg - WixTipping the scale - Eyal Eizenberg - Wix
Tipping the scale - Eyal Eizenberg - Wix
 
Tipping the Scale - Eyal Eizenberg
Tipping the Scale - Eyal EizenbergTipping the Scale - Eyal Eizenberg
Tipping the Scale - Eyal Eizenberg
 
PHP, LAMP Stack & WordPress
PHP, LAMP Stack & WordPressPHP, LAMP Stack & WordPress
PHP, LAMP Stack & WordPress
 
Challenges Building The New Joomla! Demo & Free Hosting Platform
Challenges Building The New Joomla! Demo & Free Hosting PlatformChallenges Building The New Joomla! Demo & Free Hosting Platform
Challenges Building The New Joomla! Demo & Free Hosting Platform
 
Scalable Web Architectures - Common Patterns & Approaches
Scalable Web Architectures - Common Patterns & ApproachesScalable Web Architectures - Common Patterns & Approaches
Scalable Web Architectures - Common Patterns & Approaches
 
My Website is Old Enough to Vote - My Website Can Vote - Building Sites That ...
My Website is Old Enough to Vote - My Website Can Vote - Building Sites That ...My Website is Old Enough to Vote - My Website Can Vote - Building Sites That ...
My Website is Old Enough to Vote - My Website Can Vote - Building Sites That ...
 
PDF Generation in Rails with Prawn and Prawn-to: John McCaffrey
PDF Generation in Rails with Prawn and Prawn-to: John McCaffreyPDF Generation in Rails with Prawn and Prawn-to: John McCaffrey
PDF Generation in Rails with Prawn and Prawn-to: John McCaffrey
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
 
The Characteristics of a Successful SPA
The Characteristics of a Successful SPAThe Characteristics of a Successful SPA
The Characteristics of a Successful SPA
 
Web performance
Web performanceWeb performance
Web performance
 
Presentation1
Presentation1Presentation1
Presentation1
 
Modern web application devlopment workflow
Modern web application devlopment workflowModern web application devlopment workflow
Modern web application devlopment workflow
 
20130714 php matsuri - highly available php
20130714   php matsuri - highly available php20130714   php matsuri - highly available php
20130714 php matsuri - highly available php
 
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 
Javascript - Getting started | DevCom ISITCom
Javascript - Getting started | DevCom ISITComJavascript - Getting started | DevCom ISITCom
Javascript - Getting started | DevCom ISITCom
 
10 step guide to convert HTML to Wordpress
10 step guide to convert HTML to Wordpress10 step guide to convert HTML to Wordpress
10 step guide to convert HTML to Wordpress
 
Les Basiques - Web Développement HTML5, CSS3, JS et PHP
Les Basiques - Web  Développement HTML5, CSS3, JS et PHPLes Basiques - Web  Développement HTML5, CSS3, JS et PHP
Les Basiques - Web Développement HTML5, CSS3, JS et PHP
 

Similar a WP-CLI - Super Admin Tips and Tricks

Making the Most of Plug-ins - WordCamp Toronto 2008
Making the Most of Plug-ins - WordCamp Toronto 2008Making the Most of Plug-ins - WordCamp Toronto 2008
Making the Most of Plug-ins - WordCamp Toronto 2008Brendan Sera-Shriar
 
Take Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLITake Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLIDiana Thompson
 
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTYWilliam Chong
 
Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16Enrique Davila
 
安装Apache Hadoop的轻松
安装Apache Hadoop的轻松安装Apache Hadoop的轻松
安装Apache Hadoop的轻松Enrique Davila
 
簡単にApache Hadoopのインストール
 簡単にApache Hadoopのインストール 簡単にApache Hadoopのインストール
簡単にApache HadoopのインストールEnrique Davila
 
Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16Enrique Davila
 
WordPress Plugin Development- Rich Media Institute Workshop
WordPress Plugin Development- Rich Media Institute WorkshopWordPress Plugin Development- Rich Media Institute Workshop
WordPress Plugin Development- Rich Media Institute WorkshopBrendan Sera-Shriar
 
Docker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopDocker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopChris Tankersley
 
Take Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLITake Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLIDiana Thompson
 
The GiveCamp Guide to WordPress
The GiveCamp Guide to WordPressThe GiveCamp Guide to WordPress
The GiveCamp Guide to WordPressSarah Dutkiewicz
 
Advanced WordPress Tooling: By InstaWP.com
Advanced WordPress Tooling: By InstaWP.comAdvanced WordPress Tooling: By InstaWP.com
Advanced WordPress Tooling: By InstaWP.comInstaWP Inc
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalDrupalDay
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupalsparkfabrik
 
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?Wong Hoi Sing Edison
 
Cms drupal installation & configuration anil mishra
Cms drupal installation & configuration   anil mishraCms drupal installation & configuration   anil mishra
Cms drupal installation & configuration anil mishraAnil Mishra
 
Take Command of WordPress With WP-CLI at WordCamp Long Beach
Take Command of WordPress With WP-CLI at WordCamp Long BeachTake Command of WordPress With WP-CLI at WordCamp Long Beach
Take Command of WordPress With WP-CLI at WordCamp Long BeachDiana Thompson
 
Hyper v replication on windows server 2016 step by step
Hyper v replication on windows server 2016 step by stepHyper v replication on windows server 2016 step by step
Hyper v replication on windows server 2016 step by stepAhmed Abdelwahed
 
Get Started With Drupal
Get Started With DrupalGet Started With Drupal
Get Started With DrupalKartik Singhal
 

Similar a WP-CLI - Super Admin Tips and Tricks (20)

Making the Most of Plug-ins - WordCamp Toronto 2008
Making the Most of Plug-ins - WordCamp Toronto 2008Making the Most of Plug-ins - WordCamp Toronto 2008
Making the Most of Plug-ins - WordCamp Toronto 2008
 
Take Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLITake Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLI
 
Old WP REST API, New Tricks
Old WP REST API, New TricksOld WP REST API, New Tricks
Old WP REST API, New Tricks
 
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
 
Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16
 
安装Apache Hadoop的轻松
安装Apache Hadoop的轻松安装Apache Hadoop的轻松
安装Apache Hadoop的轻松
 
簡単にApache Hadoopのインストール
 簡単にApache Hadoopのインストール 簡単にApache Hadoopのインストール
簡単にApache Hadoopのインストール
 
Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16Installing hadoop on ubuntu 16
Installing hadoop on ubuntu 16
 
WordPress Plugin Development- Rich Media Institute Workshop
WordPress Plugin Development- Rich Media Institute WorkshopWordPress Plugin Development- Rich Media Institute Workshop
WordPress Plugin Development- Rich Media Institute Workshop
 
Docker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopDocker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 Workshop
 
Take Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLITake Command of WordPress With WP-CLI
Take Command of WordPress With WP-CLI
 
The GiveCamp Guide to WordPress
The GiveCamp Guide to WordPressThe GiveCamp Guide to WordPress
The GiveCamp Guide to WordPress
 
Advanced WordPress Tooling: By InstaWP.com
Advanced WordPress Tooling: By InstaWP.comAdvanced WordPress Tooling: By InstaWP.com
Advanced WordPress Tooling: By InstaWP.com
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
[HKDUG] #20161210 - BarCamp Hong Kong 2016 - What's News in PHP?
 
Cms drupal installation & configuration anil mishra
Cms drupal installation & configuration   anil mishraCms drupal installation & configuration   anil mishra
Cms drupal installation & configuration anil mishra
 
Take Command of WordPress With WP-CLI at WordCamp Long Beach
Take Command of WordPress With WP-CLI at WordCamp Long BeachTake Command of WordPress With WP-CLI at WordCamp Long Beach
Take Command of WordPress With WP-CLI at WordCamp Long Beach
 
Hyper v replication on windows server 2016 step by step
Hyper v replication on windows server 2016 step by stepHyper v replication on windows server 2016 step by step
Hyper v replication on windows server 2016 step by step
 
Get Started With Drupal
Get Started With DrupalGet Started With Drupal
Get Started With Drupal
 

Más de Jonathan Perlman

Leveling Upon Building Forms.pdf
Leveling Upon Building Forms.pdfLeveling Upon Building Forms.pdf
Leveling Upon Building Forms.pdfJonathan Perlman
 
Leveling up on Building Forms
Leveling up on Building FormsLeveling up on Building Forms
Leveling up on Building FormsJonathan Perlman
 
The Dawson Way of Doing Things: A Study of Our Path Using WordPress
The Dawson Way of Doing Things: A Study of Our Path Using WordPressThe Dawson Way of Doing Things: A Study of Our Path Using WordPress
The Dawson Way of Doing Things: A Study of Our Path Using WordPressJonathan Perlman
 
On the Move, Migrations Made Simple
On the Move, Migrations Made SimpleOn the Move, Migrations Made Simple
On the Move, Migrations Made SimpleJonathan Perlman
 
10 things you need to know about leaving shared hosting
10 things you need to know about leaving shared hosting10 things you need to know about leaving shared hosting
10 things you need to know about leaving shared hostingJonathan Perlman
 

Más de Jonathan Perlman (7)

Leveling Upon Building Forms.pdf
Leveling Upon Building Forms.pdfLeveling Upon Building Forms.pdf
Leveling Upon Building Forms.pdf
 
WooCommerce Fundamentals
WooCommerce FundamentalsWooCommerce Fundamentals
WooCommerce Fundamentals
 
Leveling up on Building Forms
Leveling up on Building FormsLeveling up on Building Forms
Leveling up on Building Forms
 
The Dawson Way of Doing Things: A Study of Our Path Using WordPress
The Dawson Way of Doing Things: A Study of Our Path Using WordPressThe Dawson Way of Doing Things: A Study of Our Path Using WordPress
The Dawson Way of Doing Things: A Study of Our Path Using WordPress
 
WooCommerce Fundamentals
WooCommerce FundamentalsWooCommerce Fundamentals
WooCommerce Fundamentals
 
On the Move, Migrations Made Simple
On the Move, Migrations Made SimpleOn the Move, Migrations Made Simple
On the Move, Migrations Made Simple
 
10 things you need to know about leaving shared hosting
10 things you need to know about leaving shared hosting10 things you need to know about leaving shared hosting
10 things you need to know about leaving shared hosting
 

Último

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Último (20)

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

WP-CLI - Super Admin Tips and Tricks

  • 1. WP-CLI – Super Admin Level Tips and Tricks JONATHAN PERLMAN @JPURPLEMAN WWW.JPURPLEMAN.CA/WCOTTAWA2016
  • 2. Jonathan Perlman 14 years using PHP & MySql as a web developer at Dawson College 9 years teaching the web and Microsoft Office for Dawson College 6 years using WordPress 2 WordCamp talks I’m not a Linux unicorn 6/18/2016 WORDCAMP OTTAWA 2016
  • 3. What you need to know… This works on Linux computers / servers. Might work on Mac. Not tested on Mac. Won't work on Windows. Shared and managed hosts don't allow you to install WP-CLI We won't be talking about WP-CLI "Packages“ All WordPress code samples are located in the repo https://github.com/jpurpleman/WordPress-Stuff 6/18/2016 WORDCAMP OTTAWA 2016
  • 4. WP-CLI Requirements UNIX-like environment (OS X, Linux, FreeBSD, Cygwin); limited support in Windows environment PHP 5.3.29 or later WordPress 3.7 or later WordPress 4.5 or later requires WP-CLI version 0.23.0 6/18/2016 WORDCAMP OTTAWA 2016
  • 5. The way to level up … Learn bash! 6/18/2016 WORDCAMP OTTAWA 2016
  • 6. hello-world.sh #!/bin/bash echo 'Hello World!' bash hello-world.sh chmod +x hello-world.sh ./hello-world.sh 6/18/2016 WORDCAMP OTTAWA 2016
  • 7. variables.sh #!/bin/bash error X=hello world X = "hello world" OK X="hello world" #output echo $X 6/18/2016 WORDCAMP OTTAWA 2016
  • 8. conditionals.sh #!/bin/bash city=$1 if [ "$city" == "Ottawa" ] then echo "What a great city" else echo "Hello, you're in WordCamp $city!" fi 6/18/2016 WORDCAMP OTTAWA 2016
  • 9. loops-and-arrays.sh #!/bin/bash servers=( 'web1.example.com' 'web2.example.com' ) for server in "${servers[@]}"; do echo $server done 6/18/2016 WORDCAMP OTTAWA 2016
  • 11. .bashrc & scripts You can run the custom command in any folder Will work for only your user account Better if you have more than one server You have to copy it to work in a specific directory You can create reusable scripts You can create scripts the run scripts 6/18/2016 WORDCAMP OTTAWA 2016
  • 12. Script – wp-cli-install.sh #!/bin/bash servers=( 'web1.example.com' 'web2.example.com‘ ) curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar for server in "${servers[@]}"; do echo $server scp ./wp-cli.phar user@$server: ssh user@$server "chmod +x wp-cli.phar" ssh user@$server "sudo mv wp-cli.phar /usr/local/bin/wp" ssh user@$server "/usr/local/bin/wp --info" done rm ./wp-cli.phar 6/18/2016 WORDCAMP OTTAWA 2016
  • 13. .bashrc - Get WordPress Salts alias wordpress-salt='wget https://api.wordpress.org/secret-key/1.1/salt/ -qO-' Normally one line, not multiple… 6/18/2016 WORDCAMP OTTAWA 2016
  • 14. .bashrc - Update WordPress alias wordpress-update-all='wp core update && wp core update-db --network && wp plugin update --all && wp theme update --all ' Normally one line, not multiple… 6/18/2016 WORDCAMP OTTAWA 2016
  • 15. .bashrc – Delete Sample Page alias wordpress-delete-sample-page=‘wp post delete $( wp post list --post_type=page --posts_per_page=1 --post_status=publish --pagename="sample-page" --field=ID --format=ids )’ 6/18/2016 WORDCAMP OTTAWA 2016
  • 16. .bashrc - Remove Default Widgets alias wordpress-remove-default-widgets=' wp widget delete search-2 && wp widget delete recent-posts-2 && wp widget delete recent-comments-2 && wp widget delete archives-2 && wp widget delete categories-2 && wp widget delete meta-2' Normally one line, not multiple… 6/18/2016 WORDCAMP OTTAWA 2016
  • 17. Script - see-option-on-all-sites.sh #!/bin/bash for url in $( wp site list --field=url --url=http://site.com | sort –u ) do echo $url wp option get blogname done 6/18/2016 WORDCAMP OTTAWA 2016
  • 18. see-all-sites-with-gravity-forms.sh #!/bin/bash for blog_id in $(wp site list --field=blog_id --url=http://site.com | sort -u ) do echo $blog_id wp db query "select count(id) from wp_${blog_id}_rg_form" done 6/18/2016 WORDCAMP OTTAWA 2016
  • 19. Script - create-pages-in-bluk.sh ( 1 ) userID=1 pages=( 'Home' 'About' 'Contact Us' ) for page in "${pages[@]}"; do wp post create --post_type=page --post_title="$page" --post_status=publish --post_author=$userID --porcelain echo "wp post create $page" done 6/18/2016 WORDCAMP OTTAWA 2016
  • 20. Script - create-pages-in-bluk.sh ( 2 ) wp menu create "Menu" --quiet export IFS=" " for pageID in $( wp post list --order="ASC" --orderby="ID" --post_type=page --post_status=publish --posts_per_page=-1 --field=ID --format=ids ); do wp menu item add-post menu $pageID --quiet done wp menu location assign menu primary 6/18/2016 WORDCAMP OTTAWA 2016
  • 21. Now to the real timesavers! 6/18/2016 WORDCAMP OTTAWA 2016
  • 22. Resulting git log – 14 commits 123438b 2016-06-16 Jonathan Perlman Adding plugin: WordPress Importer at version 0.6.2 449e092 2016-06-16 Jonathan Perlman Updating plugin: Print Friendly and PDF to version 3.4.6 b1d983a 2016-06-16 Jonathan Perlman Updating plugin: WooThemes Helper to version 1.6.2 8d2d7e3 2016-06-16 Jonathan Perlman Updating plugin: WP Migrate DB Pro Media Files to version 1.4.4 ce0181e 2016-06-16 Jonathan Perlman Updating plugin: WP Migrate DB Pro to version 1.6 3a37bd6 2016-06-16 Jonathan Perlman Updating plugin: Gravity Forms + Custom Post Types to version 3.1.3 91e2560 2016-06-16 Jonathan Perlman Updating plugin: jQuery Responsive Select Menu to version 1.5.0 83af679 2016-06-16 Jonathan Perlman Updating plugin: Gravity Forms to version 1.9.19 bbaa123 2016-06-16 Jonathan Perlman Adding plugin: Gravity Forms Advanced File Uploader at version 1.4 41b2ae1 2016-06-16 Jonathan Perlman Updating plugin: Google Analytics by MonsterInsights to version 5.5 81eac9d 2016-06-16 Jonathan Perlman Updating plugin: Custom Post Type UI to version 1.3.5 fbcc677 2016-06-16 Jonathan Perlman Updating plugin: Basic Google Maps Placemarks to version 1.10.6 c5bdb6c 2016-06-16 Jonathan Perlman Updating plugin: Advanced Custom Fields to version 4.4.7 476c404 2016-06-16 Jonathan Perlman Updating plugin: Accordion Shortcodes to version 2.3.0 6/18/2016 WORDCAMP OTTAWA 2016
  • 23. .bashrc – git-wp-commit-object ( 1 ) Go into a plugin or theme folder Get the current directory name Check to see if we're in a plugin or theme folder Convert "plugins" to plugin or "themes" to theme Get details about the WordPress object we want to commit Get the title of the plugin or theme we're committing Get the version of the plugin or theme we're committing 6/18/2016 WORDCAMP OTTAWA 2016
  • 24. .bashrc – git-wp-commit-object ( 2 ) Check to see if it's in the repo already or not Create parts of the commit message conditionally Add all files to git that have been added or modified Add all files to git that have been deleted or moved Git commit! with appropriate message Print that message 6/18/2016 WORDCAMP OTTAWA 2016
  • 25. Script – wp-install.sh If we're going to remove sites Do mysql stuff to drop the db, revoke all and remove the user Destroy the file system folder of the site If we’re going to add sites Loop proposed sites and make sure we don't overwrite any folder Mysql stuff, drop db if exists, create database, grant privileges Delete and Create the directory of the install path Go into the install path Download the WordPress core files Create the wp-config file with our standard setup Generate random 8 character password Create database tables, and install WordPress Dump out information to a text file for the teacher Dump out information for the specific student discourage search engines delete sample page, and create homepage set homepage as front page set pretty urls delete akismet and hello dolly create a navigation bar disable file edit in wordpress config create .htaccess file create the .htpasswd file change ownership of the folder to apache change file permissions Calculate and send percent done to whiptail Convert text file of info for teacher to pdf Convert many student one page documents into one pdf 6/18/2016 WORDCAMP OTTAWA 2016
  • 27. Thank you! Questions? JONATHAN PERLMAN @JPURPLEMAN WWW.JPURPLEMAN.CA/WCOTTAWA2016