Mit WP-CLI bietet WordPress ein Command Line Interface, wodurch WordPress sich über die Kommandozeile bedienen und teilweise automatisieren lässt.
Nachfolgend ein Skript, das ich gerne nutze, um eine neue Seite mit GeneratePress inkl. GeneratePress Pro aufzusetzen. Dabei wird auch der Lizenz-Key sowie alle in GeneratePress enthaltenen Module aktiviert.
Zunächst definiere ich die Variable SITE
, die den zukünftigen Projektnamen enthält:
SITE="my-example-gp-project"
Anschließend wechsle ich in mein Verzeichnis, in dem alle Web-Projekte liegen. Als Basis dafür nutze ich übrigens Laravel Valet. Nachdem in das Verzeichnis gewechselt wurde, wird ein etwaig vorhandenes Verzeichnis mit gleichem Namen gelöscht (ACHTUNG!):
cd /Users/sebastian/webdev rm -r -f $SITE
Nun wird WordPress heruntergeladen und installiert. Dann wird der Debug-Modus sowie das Debug-Log aktiviert. Anschließend wird eine Datenbank mit selbigem Namen geleert, sofern vorhanden (ACHTUNG!):
wp core download --locale=de_DE --path=$SITE cd $SITE wp config create --dbname=$SITE --dbuser=root --locale=de_DE --extra-php <<PHP define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); PHP wp db reset --yes wp core install --url=$SITE.test --title=$SITE --admin_user=admin --admin_password=password --admin_email=contact@example.com
Nun wird GeneratePress inkl. GeneratePress Pro installiert. Für GeneratePress Pro nutze ich SatisPress, ein WordPress Plugin, das mir ein Repository für Premium Plugins und Themes zur Verfügung stellt. Natürlich kann man GeneratePress Pro auch manuell installieren, möchtest du ebenfalls SatisPress nutzen, musst du die example.com-URL im Aufruf unten entsprechend anpassen:
wp theme install generatepress wp theme activate generatepress wp plugin install generateblocks --activate wp plugin install https://example.com/satispress/gp-premium/latest --activate
Anschließend wird GeneratePress Pro aktiviert (YOUR_LICENSE_KEY ersetzen) und die verschiedenen Module aktiviert:
wp option update gen_premium_license_key YOUR_LICENSE_KEY wp option update gen_premium_license_key_status valid wp option update generate_package_backgrounds 'activated' wp option update generate_package_blog 'activated' wp option update generate_package_copyright 'activated' wp option update generate_package_disable_elements 'activated' wp option update generate_package_elements 'activated' wp option update generate_package_menu_plus 'activated' wp option update generate_package_secondary_nav 'activated' wp option update generate_package_spacing 'activated' wp option update generate_package_woocommerce 'activated' wp option update generate_package_site_library 'activated'
Zuletzt wird WordPress noch ein wenig aufgeräumt, die Default-Themes entfernt sowie das Akismet- und Hello-Plugin deinstalliert:
wp theme delete twentyseventeen wp theme delete twentynineteen wp plugin uninstall akismet wp plugin uninstall hello
Im letzten Schritt wird WordPress sowie alle Plugins aktualisiert sowie ggf. vorhandene Übersetzungsdaten geladen:
wp core update && wp plugin update --all && wp core language update
Das komplette Script
Das komplette Script sieht letztendlich wie folgt aus:
SITE="my-example-gp-project" cd /Users/sebastian/webdev rm -r -f $SITE wp core download --locale=de_DE --path=$SITE cd $SITE wp config create --dbname=$SITE --dbuser=root --locale=de_DE --extra-php <<PHP define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); PHP wp db reset --yes wp core install --url=$SITE.test --title=$SITE --admin_user=admin --admin_password=password --admin_email=contact@example.com wp theme install generatepress wp theme activate generatepress wp plugin install generateblocks --activate wp plugin install https://example.com/satispress/gp-premium/latest --activate wp option update gen_premium_license_key YOUR_LICENSE_KEY wp option update gen_premium_license_key_status valid wp option update generate_package_backgrounds 'activated' wp option update generate_package_blog 'activated' wp option update generate_package_copyright 'activated' wp option update generate_package_disable_elements 'activated' wp option update generate_package_elements 'activated' wp option update generate_package_menu_plus 'activated' wp option update generate_package_secondary_nav 'activated' wp option update generate_package_spacing 'activated' wp option update generate_package_woocommerce 'activated' wp option update generate_package_site_library 'activated' wp theme delete twentyseventeen wp theme delete twentynineteen wp plugin uninstall akismet wp plugin uninstall hello wp core update && wp plugin update --all && wp core language update