SlideShare a Scribd company logo
EXTENDED EDITION
1013 THINGS
EVERY DEVELOPER
SHOULD KNOW ABOUT
THEIR DATABASE TO
RUN WORDPRESS
OPTIMALLY
WordCamp Barcelona 2018
Otto Kekäläinen
Seravo.com
@ottokekalainen
#wcbcn
● Linux and open source
advocate
● Written WP themes and
plugins, contributed to
WordPress Core, MySQL,
MariaDB…
● CEO, sysadmin and developer
at Seravo.com – WordPress
hosting and upkeep
Otto Kekäläinen
Enterprise grade
hosting and upkeep
for WordPress
The database is involved in
both!
○ contains all your valuable data
○ often the bottleneck of
performance
Common Issues in WordPress:
Security & Speed
DATABASE
THE SINGLE MOST
IMPORTANT PART
OF YOUR
WORDPRESS
INFRASTRUCTURE
TIP #1: MAKE (USE OF) DB DUMPS
Benefits
● Copying your WordPress files is not enough
for a backup
● The database dump file format is
○ plain-text: view and modify it as much as
you like
○ interoperable: import it into a MySQL or
MariaDB database server anywhere
Command line: mysqldump or wp db export
TIP #1: MAKE (USE OF) DB DUMPS
$ wp db export --skip-extended-insert --allow-root
--single-transaction example-after.sql
$ diff -u example-before.sql example-after.sql
--- example-before.sql 2018-08-30 10:58:23.243836204 +0300
+++ example-after.sql 2018-08-30 10:57:57.771762687 +0300
@@ -2,3 +2,4 @@
INSERT INTO `wp_terms` VALUES (70,'transients','transients',0,0);
INSERT INTO `wp_terms` VALUES (71,'code','code',0,0);
INSERT INTO `wp_terms` VALUES (72,'performance','performance',0,0);
+INSERT INTO `wp_terms` VALUES (73,'WordPress','wordpress',0,0);
What are these tables and columns? See
codex.wordpress.org/Database_Description
TIP #2: LEARN WP-CLI DB COMMANDS
List them all with wp db --help
My most used ones:
● wp db export/import
● wp db size --tables --all-tables --size_format=mb
● wp db cli
● wp db search --one_line
● wp search-replace --all-tables
http://example.com https://example.com
^ My favourite!
TIP #3: USE ADMINER TO BROWSE
● Adminer is one file, easy to install and update
● Less security vulnerabilities than in
PHPMyAdmin
TIP #4: WP_OPTIONS AND AUTOLOAD
● Every single WordPress page load runs this query
SELECT * FROM wp_options WHERE autoload = 'yes'
TIP #4: WP_OPTIONS AND AUTOLOAD
● If wp_options table is larger than 1 MB, try to clean it up
● Find rows with the largest amount of data in the
option_value field:
○ SELECT option_name, length(option_value) FROM
wp_options WHERE autoload='yes' ORDER BY
length(option_value) DESC LIMIT 30
● File bugs against stupid plugins polluting your options
table
● If cannot be cleaned, add an index on autoload
○ CREATE INDEX autoloadindex ON
wp_options(autoload, option_name)
TIP #5: WP_POSTMETA BLOAT
● Any site using custom post types or WooCommerce is likely to
have a big wp_postmeta table. While every post adds just one
new row (and many fields) to the database and keeping the
number of column names constant, the use of
add_post_meta() calls will bloat the database with tens or
hundreds of rows per post where each row only contains two
fields: name and value.
● Find the meta_key naming patterns with most amount of
rows:
○ SELECT substring(meta_key, 1, 20) AS key_start,
count(*) AS count FROM wp_postmeta
GROUP BY key_start ORDER BY count
DESC LIMIT 30
Unfortunately database bloat
and stupid use of database is
common in plugins.
We need to do more to raise
awareness about database
best practices!
TIP #6: LEARN SQL
● It is not enough that you know PHP, learn SQL as
well.
● The database has 20 years of engineering on how to
fetch a small set of data from a huge set of data as
quickly as possible. Don’t try to reinvent that in PHP.
● Don’t put everything in wp_postmeta. Don’t be
afraid of creating your own custom tables that have
the correct columns, relations and indexes already
defined.
● Learn what ‘index’ means and why you don’t want to
be causing ‘full table scans’ in the database.
TIP #7: BUT DON’T USE SQL DIRECTLY
● In WordPress PHP code use get_posts() for basics
● Use the WP_Query class for more advanced cases
● When WP_Query does not fit, use the
$wpdb->get_row(), $wpdb->insert() etc methods
● If you really need
raw SQL, don’t
access the database
directly, instead use
$wpdb->prepare()
and
$wpdb->query() to
avoid SQL injection
vulnerabilities
TIP #8: CONFIGURE DATABASE SERVER
1. MariaDB preferred over Oracle MySQL
2. Use a recent version (MariaDB 10.1+)
3. Storage engine: InnoDB (not MyISAM)
4. Character set: UTFMB4 (for emojis )
5. Collation: your local sorting order A-Ö
6. ..and optimize all the other settings
Or hire a database administrator, or use a
WordPress hosting company that does this for you.
TIP #9: TRANSIENTS AND OBJECT CACHE
● Use Redis cache or similar
to store transients and
sessions so they can be
removed from
wp_options
// Simple WP Transient API example
if ( ! $result = get_transient( ‘q_result’ ) ) {
$result = run_complex_and_slow_query();
set_transient( ‘q_result’, $result, 3600 );
}
echo $result;
● Redis and WP Transients
API will ease the load on
the database and help
you make super fast sites
TIP #10: MONITOR PERFORMANCE
● Take a peek with
SHOW PROCESSLIST;
● Analyse unusual slowness by
enabling mariadb-slow.log
logging
● Enable Tideways or similar
service for sampling your
WordPress site PHP execution
in production to find
bottlenecks
AND ONE EXTRA TIP:
NEVER PUSH YOUR DEV
DATABASE INTO PRODUCTION
TIP #11: DB CLEANUP
● DELETE FROM `wp_posts` WHERE post_type =
'revision' AND post_date NOT LIKE '2018-%';
● DELETE FROM wp_options WHERE option_name
LIKE ('_transient_%') OR option_name LIKE
('_site_transient_%');
● Checkout what wp-content/plugins/*/uninstall.php
contains and what plugins are supposed to clean
away if they are uninstalled
TIP #12: EXPLAIN, PLEASE
● You can append ‘EXPLAIN’ to any query and the
optimizer will tell how it is running the query
● EXPLAIN SELECT * FROM wp_options WHERE
autoload = 'yes';
MariaDB [wp_palvelu_06a4ad]> explain SELECT * FROM wp_options WHERE autoload = 'yes';
+------+-------------+------------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+------------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | wp_options | ALL | NULL | NULL | NULL | NULL | 415 | Using where |
+------+-------------+------------+------+---------------+------+---------+------+------+-------------+
TIP #13: TEST WITH DUMMY DATA
● While developing a site, load lots of dummy data
into it so you can test how your site looks and
performs with 100, 1000 or 100 000 posts.
● Basic: Import themeunittestdata.wordpress.xml
○ codex.wordpress.org/Theme_Unit_Test
● More data: wp post generate
○ curl http://loripsum.net/api/5 |
wp post generate --post_content --count=10
● More realism: wp-cli-fixtures
○ github.com/nlemoine/wp-cli-fixtures
MUCHAS
GRACIAS!
SERAVO.COM
facebook.com/Seravo
Twitter: @Seravo
@ottokekalainen

More Related Content

PDF
Automatic testing and quality assurance for WordPress plugins and themes
PDF
WordCamp Finland 2015 - WordPress Security
PDF
Search in WordPress - how it works and howto customize it
PDF
Use Xdebug to profile PHP
PDF
Less and faster – Cache tips for WordPress developers
PDF
The 5 most common reasons for a slow WordPress site and how to fix them – ext...
PDF
Seravo.com: WordPress Security 101
PDF
Improving WordPress performance (xdebug and profiling)
Automatic testing and quality assurance for WordPress plugins and themes
WordCamp Finland 2015 - WordPress Security
Search in WordPress - how it works and howto customize it
Use Xdebug to profile PHP
Less and faster – Cache tips for WordPress developers
The 5 most common reasons for a slow WordPress site and how to fix them – ext...
Seravo.com: WordPress Security 101
Improving WordPress performance (xdebug and profiling)

What's hot (20)

PPTX
Anthony Somerset - Site Speed = Success!
PDF
Mastering WordPress Vol.1
PPTX
A crash course in scaling wordpress
PDF
PHP SA 2014 - Releasing Your Open Source Project
PDF
Improving WordPress Performance with Xdebug and PHP Profiling
PDF
WordPress Server Security
PDF
The wp config.php
PDF
Why it's dangerous to turn off automatic updates and here's how to do it
PDF
WordPress Performance optimization
PDF
Wordpress development: A Modern Approach
PDF
Developers, Be a Bada$$ with WP-CLI
PPTX
Managing Multisite: Lessons from a Large Network
PDF
Scaling WordPress
PPTX
Drupal Development Tips
PPTX
WordPress security for everyone
PPT
Roy foubister (hosting high traffic sites on a tight budget)
PPTX
WordPress + NGINX Best Practices with EasyEngine
PDF
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
PDF
Find WordPress performance bottlenecks with XDebug PHP profiling
PDF
DrupalCon Barcelona 2015
Anthony Somerset - Site Speed = Success!
Mastering WordPress Vol.1
A crash course in scaling wordpress
PHP SA 2014 - Releasing Your Open Source Project
Improving WordPress Performance with Xdebug and PHP Profiling
WordPress Server Security
The wp config.php
Why it's dangerous to turn off automatic updates and here's how to do it
WordPress Performance optimization
Wordpress development: A Modern Approach
Developers, Be a Bada$$ with WP-CLI
Managing Multisite: Lessons from a Large Network
Scaling WordPress
Drupal Development Tips
WordPress security for everyone
Roy foubister (hosting high traffic sites on a tight budget)
WordPress + NGINX Best Practices with EasyEngine
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Find WordPress performance bottlenecks with XDebug PHP profiling
DrupalCon Barcelona 2015
Ad

Similar to 10 things every developer should know about their database to run word press optimally (20)

PDF
13 things every developer should know about their database to run word press ...
KEY
15 protips for mysql users
PPTX
Best Practices for WordPress in Enterprise
PDF
Speeding up your WordPress site - WordCamp Hamilton 2015
PPTX
Caching, Scaling, and What I've Learned from WordPress.com VIP
PPTX
WordCamp Harare 2016 - Site Speed = Success
PPTX
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
PDF
Best practices-wordpress-enterprise
DOCX
Mohan Testing
PPTX
Word press sites maintenanace
PPTX
MySQL Tips for WordPress
PDF
Best Practices for WordPress
PPTX
Level Up: 5 Expert Tips for Optimizing WordPress Performance
PDF
Top ten-list
ODP
Caching and tuning fun for high scalability
ODP
Beyond php it's not (just) about the code
PDF
Speeding up your WordPress Site - WordCamp Toronto 2015
PDF
5 Best Practices To Optimize Your WordPress Database.pdf
PDF
Caching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 Final
PDF
10 sql tips to speed up your database cats whocode.com
13 things every developer should know about their database to run word press ...
15 protips for mysql users
Best Practices for WordPress in Enterprise
Speeding up your WordPress site - WordCamp Hamilton 2015
Caching, Scaling, and What I've Learned from WordPress.com VIP
WordCamp Harare 2016 - Site Speed = Success
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
Best practices-wordpress-enterprise
Mohan Testing
Word press sites maintenanace
MySQL Tips for WordPress
Best Practices for WordPress
Level Up: 5 Expert Tips for Optimizing WordPress Performance
Top ten-list
Caching and tuning fun for high scalability
Beyond php it's not (just) about the code
Speeding up your WordPress Site - WordCamp Toronto 2015
5 Best Practices To Optimize Your WordPress Database.pdf
Caching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 Final
10 sql tips to speed up your database cats whocode.com
Ad

More from Otto Kekäläinen (20)

PDF
FOSDEM2021: MariaDB post-release quality assurance in Debian and Ubuntu
PDF
MariaDB quality assurance in Debian and Ubuntu
PDF
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
PDF
Technical SEO for WordPress - 2019 edition
PDF
How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...
PDF
DebConf 2019 MariaDB packaging in Debian BoF
PDF
The 5 most common reasons for a slow WordPress site and how to fix them
PDF
How to investigate and recover from a security breach in WordPress
PDF
Technical SEO for WordPress
PDF
Automatic testing and quality assurance for WordPress plugins
PDF
WordPress-tietoturvan perusteet
PDF
Technical SEO for WordPress - 2017 edition
PDF
MariaDB adoption in Linux distributions and development environments
PDF
WordPress security 101 - WP Jyväskylä Meetup 21.3.2017
PDF
WordPress security 101 - WP Turku Meetup 2.2.2017
PDF
Testing and updating WordPress - Advanced techniques for avoiding regressions
PDF
Git best practices 2016
PDF
MariaDB Developers Meetup 2016 welcome words
PDF
MariaDB in Debian and Ubuntu: The next million users
PDF
Koodikerho PEPE Pajapäivä 6.9.2016
FOSDEM2021: MariaDB post-release quality assurance in Debian and Ubuntu
MariaDB quality assurance in Debian and Ubuntu
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
Technical SEO for WordPress - 2019 edition
How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...
DebConf 2019 MariaDB packaging in Debian BoF
The 5 most common reasons for a slow WordPress site and how to fix them
How to investigate and recover from a security breach in WordPress
Technical SEO for WordPress
Automatic testing and quality assurance for WordPress plugins
WordPress-tietoturvan perusteet
Technical SEO for WordPress - 2017 edition
MariaDB adoption in Linux distributions and development environments
WordPress security 101 - WP Jyväskylä Meetup 21.3.2017
WordPress security 101 - WP Turku Meetup 2.2.2017
Testing and updating WordPress - Advanced techniques for avoiding regressions
Git best practices 2016
MariaDB Developers Meetup 2016 welcome words
MariaDB in Debian and Ubuntu: The next million users
Koodikerho PEPE Pajapäivä 6.9.2016

Recently uploaded (20)

PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
AI in Product Development-omnex systems
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
System and Network Administraation Chapter 3
PPTX
ai tools demonstartion for schools and inter college
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PPTX
Transform Your Business with a Software ERP System
PPTX
L1 - Introduction to python Backend.pptx
PPTX
CHAPTER 2 - PM Management and IT Context
ManageIQ - Sprint 268 Review - Slide Deck
How to Choose the Right IT Partner for Your Business in Malaysia
Adobe Illustrator 28.6 Crack My Vision of Vector Design
AI in Product Development-omnex systems
Upgrade and Innovation Strategies for SAP ERP Customers
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Odoo POS Development Services by CandidRoot Solutions
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Operating system designcfffgfgggggggvggggggggg
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Softaken Excel to vCard Converter Software.pdf
System and Network Administraation Chapter 3
ai tools demonstartion for schools and inter college
2025 Textile ERP Trends: SAP, Odoo & Oracle
Transform Your Business with a Software ERP System
L1 - Introduction to python Backend.pptx
CHAPTER 2 - PM Management and IT Context

10 things every developer should know about their database to run word press optimally

  • 1. EXTENDED EDITION 1013 THINGS EVERY DEVELOPER SHOULD KNOW ABOUT THEIR DATABASE TO RUN WORDPRESS OPTIMALLY WordCamp Barcelona 2018 Otto Kekäläinen Seravo.com @ottokekalainen #wcbcn
  • 2. ● Linux and open source advocate ● Written WP themes and plugins, contributed to WordPress Core, MySQL, MariaDB… ● CEO, sysadmin and developer at Seravo.com – WordPress hosting and upkeep Otto Kekäläinen
  • 3. Enterprise grade hosting and upkeep for WordPress
  • 4. The database is involved in both! ○ contains all your valuable data ○ often the bottleneck of performance Common Issues in WordPress: Security & Speed
  • 5. DATABASE THE SINGLE MOST IMPORTANT PART OF YOUR WORDPRESS INFRASTRUCTURE
  • 6. TIP #1: MAKE (USE OF) DB DUMPS Benefits ● Copying your WordPress files is not enough for a backup ● The database dump file format is ○ plain-text: view and modify it as much as you like ○ interoperable: import it into a MySQL or MariaDB database server anywhere Command line: mysqldump or wp db export
  • 7. TIP #1: MAKE (USE OF) DB DUMPS $ wp db export --skip-extended-insert --allow-root --single-transaction example-after.sql $ diff -u example-before.sql example-after.sql --- example-before.sql 2018-08-30 10:58:23.243836204 +0300 +++ example-after.sql 2018-08-30 10:57:57.771762687 +0300 @@ -2,3 +2,4 @@ INSERT INTO `wp_terms` VALUES (70,'transients','transients',0,0); INSERT INTO `wp_terms` VALUES (71,'code','code',0,0); INSERT INTO `wp_terms` VALUES (72,'performance','performance',0,0); +INSERT INTO `wp_terms` VALUES (73,'WordPress','wordpress',0,0); What are these tables and columns? See codex.wordpress.org/Database_Description
  • 8. TIP #2: LEARN WP-CLI DB COMMANDS List them all with wp db --help My most used ones: ● wp db export/import ● wp db size --tables --all-tables --size_format=mb ● wp db cli ● wp db search --one_line ● wp search-replace --all-tables http://example.com https://example.com ^ My favourite!
  • 9. TIP #3: USE ADMINER TO BROWSE ● Adminer is one file, easy to install and update ● Less security vulnerabilities than in PHPMyAdmin
  • 10. TIP #4: WP_OPTIONS AND AUTOLOAD ● Every single WordPress page load runs this query SELECT * FROM wp_options WHERE autoload = 'yes'
  • 11. TIP #4: WP_OPTIONS AND AUTOLOAD ● If wp_options table is larger than 1 MB, try to clean it up ● Find rows with the largest amount of data in the option_value field: ○ SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 30 ● File bugs against stupid plugins polluting your options table ● If cannot be cleaned, add an index on autoload ○ CREATE INDEX autoloadindex ON wp_options(autoload, option_name)
  • 12. TIP #5: WP_POSTMETA BLOAT ● Any site using custom post types or WooCommerce is likely to have a big wp_postmeta table. While every post adds just one new row (and many fields) to the database and keeping the number of column names constant, the use of add_post_meta() calls will bloat the database with tens or hundreds of rows per post where each row only contains two fields: name and value. ● Find the meta_key naming patterns with most amount of rows: ○ SELECT substring(meta_key, 1, 20) AS key_start, count(*) AS count FROM wp_postmeta GROUP BY key_start ORDER BY count DESC LIMIT 30
  • 13. Unfortunately database bloat and stupid use of database is common in plugins. We need to do more to raise awareness about database best practices!
  • 14. TIP #6: LEARN SQL ● It is not enough that you know PHP, learn SQL as well. ● The database has 20 years of engineering on how to fetch a small set of data from a huge set of data as quickly as possible. Don’t try to reinvent that in PHP. ● Don’t put everything in wp_postmeta. Don’t be afraid of creating your own custom tables that have the correct columns, relations and indexes already defined. ● Learn what ‘index’ means and why you don’t want to be causing ‘full table scans’ in the database.
  • 15. TIP #7: BUT DON’T USE SQL DIRECTLY ● In WordPress PHP code use get_posts() for basics ● Use the WP_Query class for more advanced cases ● When WP_Query does not fit, use the $wpdb->get_row(), $wpdb->insert() etc methods ● If you really need raw SQL, don’t access the database directly, instead use $wpdb->prepare() and $wpdb->query() to avoid SQL injection vulnerabilities
  • 16. TIP #8: CONFIGURE DATABASE SERVER 1. MariaDB preferred over Oracle MySQL 2. Use a recent version (MariaDB 10.1+) 3. Storage engine: InnoDB (not MyISAM) 4. Character set: UTFMB4 (for emojis ) 5. Collation: your local sorting order A-Ö 6. ..and optimize all the other settings Or hire a database administrator, or use a WordPress hosting company that does this for you.
  • 17. TIP #9: TRANSIENTS AND OBJECT CACHE ● Use Redis cache or similar to store transients and sessions so they can be removed from wp_options // Simple WP Transient API example if ( ! $result = get_transient( ‘q_result’ ) ) { $result = run_complex_and_slow_query(); set_transient( ‘q_result’, $result, 3600 ); } echo $result; ● Redis and WP Transients API will ease the load on the database and help you make super fast sites
  • 18. TIP #10: MONITOR PERFORMANCE ● Take a peek with SHOW PROCESSLIST; ● Analyse unusual slowness by enabling mariadb-slow.log logging ● Enable Tideways or similar service for sampling your WordPress site PHP execution in production to find bottlenecks
  • 19. AND ONE EXTRA TIP: NEVER PUSH YOUR DEV DATABASE INTO PRODUCTION
  • 20. TIP #11: DB CLEANUP ● DELETE FROM `wp_posts` WHERE post_type = 'revision' AND post_date NOT LIKE '2018-%'; ● DELETE FROM wp_options WHERE option_name LIKE ('_transient_%') OR option_name LIKE ('_site_transient_%'); ● Checkout what wp-content/plugins/*/uninstall.php contains and what plugins are supposed to clean away if they are uninstalled
  • 21. TIP #12: EXPLAIN, PLEASE ● You can append ‘EXPLAIN’ to any query and the optimizer will tell how it is running the query ● EXPLAIN SELECT * FROM wp_options WHERE autoload = 'yes'; MariaDB [wp_palvelu_06a4ad]> explain SELECT * FROM wp_options WHERE autoload = 'yes'; +------+-------------+------------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+-------------+------------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | wp_options | ALL | NULL | NULL | NULL | NULL | 415 | Using where | +------+-------------+------------+------+---------------+------+---------+------+------+-------------+
  • 22. TIP #13: TEST WITH DUMMY DATA ● While developing a site, load lots of dummy data into it so you can test how your site looks and performs with 100, 1000 or 100 000 posts. ● Basic: Import themeunittestdata.wordpress.xml ○ codex.wordpress.org/Theme_Unit_Test ● More data: wp post generate ○ curl http://loripsum.net/api/5 | wp post generate --post_content --count=10 ● More realism: wp-cli-fixtures ○ github.com/nlemoine/wp-cli-fixtures