{"id":4636,"date":"2026-07-14T15:21:08","date_gmt":"2026-07-14T22:21:08","guid":{"rendered":"https:\/\/us.wordcamp.org\/2026\/?post_type=wcb_session&#038;p=4636"},"modified":"2026-07-14T15:21:32","modified_gmt":"2026-07-14T22:21:32","slug":"building-wp-cli-automation-for-large-wordpress-content-sites","status":"publish","type":"wcb_session","link":"https:\/\/us.wordcamp.org\/2026\/session\/building-wp-cli-automation-for-large-wordpress-content-sites\/","title":{"rendered":"Building WP-CLI Automation for Large WordPress Content Sites"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Large WordPress content platforms often contain thousands of articles maintained by editorial and SEO teams over many years. Over time, this creates content debt: outdated blocks and shortcodes, inconsistent links, missing image ALT text, legacy markup, and other large-scale issues that are impossible to fix manually.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this hands-on workshop, participants will build practical WP-CLI commands designed for large-scale WordPress content operations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Together, we will create reusable and production-safe WP-CLI scripts that can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>perform bulk content transformations,<\/li>\n\n\n\n<li>migrate blocks and shortcodes,<\/li>\n\n\n\n<li>normalize internal links,<\/li>\n\n\n\n<li>generate missing image ALT text using OpenAI,<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The workshop will focus on real engineering workflows used for maintaining large WordPress sites and multisite installations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Participants will learn how to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>structure reusable WP-CLI command classes,<\/li>\n\n\n\n<li>process posts safely in batches,<\/li>\n\n\n\n<li>work with parameters like:\n<ul class=\"wp-block-list\">\n<li>limit<\/li>\n\n\n\n<li>offset<\/li>\n\n\n\n<li>category_id<\/li>\n\n\n\n<li>dry-run<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>integrate external APIs,<\/li>\n\n\n\n<li>and evolve one-time migration scripts into automated cron-based maintenance workflows.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">By the end of the session, attendees will have built multiple practical WP-CLI commands and gained patterns they can immediately apply to large WordPress projects.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Participants should bring a laptop with Docker or a local WordPress development environment installed. Setup instructions and workshop materials will be shared before the session.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Large WordPress content platforms often contain thousands of articles maintained by editorial and SEO teams over many years. Over time, this creates content debt: outdated blocks and shortcodes, inconsistent links, missing image ALT text, legacy markup, and other large-scale issues that are impossible to fix manually. In this hands-on workshop, participants will build practical WP-CLI [&hellip;]<\/p>\n","protected":false},"author":15036545,"featured_media":0,"template":"","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_wcpt_session_time":0,"_wcpt_session_duration":3000,"_wcpt_session_type":"session","_wcpt_session_slides":"","_wcpt_session_video":"","_wcpt_speaker_id":[5071],"footnotes":""},"session_track":[45],"session_category":[46,47],"class_list":["post-4636","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-technical-wordpress","wcb_session_category-showcase","wcb_session_category-workshop"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pgSBpQ-1cM","session_date_time":{"date":"","time":""},"session_speakers":[{"id":"5071","slug":"lukasz-wilczak-2","name":"Lukasz Wilczak","link":"https:\/\/us.wordcamp.org\/2026\/speaker\/lukasz-wilczak-2\/"}],"session_cats_rendered":"Showcase, Workshop","_links":{"self":[{"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/4636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":2,"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/4636\/revisions"}],"predecessor-version":[{"id":4964,"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/4636\/revisions\/4964"}],"speakers":[{"embeddable":true,"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/speakers\/5071"}],"author":[{"embeddable":true,"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wporg\/v1\/users\/wilnet"}],"wp:attachment":[{"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/media?parent=4636"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/session_track?post=4636"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/us.wordcamp.org\/2026\/wp-json\/wp\/v2\/session_category?post=4636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}