Skip to content

Instantly share code, notes, and snippets.

@ethicka
Last active December 27, 2023 07:10
Show Gist options
  • Select an option

  • Save ethicka/c1b71e258a88b8523b7f21f164656b88 to your computer and use it in GitHub Desktop.

Select an option

Save ethicka/c1b71e258a88b8523b7f21f164656b88 to your computer and use it in GitHub Desktop.

Revisions

  1. ethicka revised this gist Jul 12, 2016. 1 changed file with 7 additions and 4 deletions.
    11 changes: 7 additions & 4 deletions wp-start.sh
    Original file line number Diff line number Diff line change
    @@ -2,11 +2,14 @@

    ##
    # WordPress Installation and VirtualHost Creation
    #
    # Description: Installs a WordPress website in the ~/Sites folder, creates a homepage,
    cleans up the WP install a bit, deletes the akismet and hello dolly plugins, creates the permalinks,
    clones the roots/sage theme framework to the theme folder, deletes all the other WP default themes,
    installs/runs npm and bower and runs gulp to create the initial assets, adds a custom gitignore file
    to /wp-content, installs the roots/soil plugin, creates a git repo in wp-content, saves the WordPress credentials to a local file and the password to your clipboard. Then it creates a virtualhost for you. Voila!
    # cleans up the WP install a bit, deletes the akismet and hello dolly plugins, creates the permalinks,
    # clones the roots/sage theme framework to the theme folder, deletes all the other WP default themes,
    # installs/runs npm and bower and runs gulp to create the initial assets, adds a custom gitignore file
    # to /wp-content, installs the roots/soil plugin, creates a git repo in wp-content, saves the WordPress
    # credentials to a local file and the password to your clipboard. Then it creates a virtualhost for you. Voila!
    #
    # Author: William Donahoe - @ethicka
    #
    # Based off of http://www.ltconsulting.co.uk/automated-wordpress-installation-with-bash-wp-cli/
  2. ethicka revised this gist Jul 12, 2016. 1 changed file with 5 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion wp-start.sh
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,11 @@

    ##
    # WordPress Installation and VirtualHost Creation
    # Description: Installs a WordPress website in the ~/Sites folder, creates a homepage, cleans up the WP install a bit, deletes the akismet and hello dolly plugins, creates the permalinks, clones the roots/sage theme framework to the theme folder, deletes all the other WP default themes, installs/runs npm and bower and runs gulp to create the initial assets, adds a custom gitignore file to /wp-content, installs the roots/soil plugin, creates a git repo in wp-content, saves the WordPress credentials to a local file and the password to your clipboard. Then it creates a virtualhost for you. Voila!
    # Description: Installs a WordPress website in the ~/Sites folder, creates a homepage,
    cleans up the WP install a bit, deletes the akismet and hello dolly plugins, creates the permalinks,
    clones the roots/sage theme framework to the theme folder, deletes all the other WP default themes,
    installs/runs npm and bower and runs gulp to create the initial assets, adds a custom gitignore file
    to /wp-content, installs the roots/soil plugin, creates a git repo in wp-content, saves the WordPress credentials to a local file and the password to your clipboard. Then it creates a virtualhost for you. Voila!
    # Author: William Donahoe - @ethicka
    #
    # Based off of http://www.ltconsulting.co.uk/automated-wordpress-installation-with-bash-wp-cli/
  3. ethicka created this gist Mar 30, 2016.
    188 changes: 188 additions & 0 deletions wp-start.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,188 @@
    #!/bin/bash -e

    ##
    # WordPress Installation and VirtualHost Creation
    # Description: Installs a WordPress website in the ~/Sites folder, creates a homepage, cleans up the WP install a bit, deletes the akismet and hello dolly plugins, creates the permalinks, clones the roots/sage theme framework to the theme folder, deletes all the other WP default themes, installs/runs npm and bower and runs gulp to create the initial assets, adds a custom gitignore file to /wp-content, installs the roots/soil plugin, creates a git repo in wp-content, saves the WordPress credentials to a local file and the password to your clipboard. Then it creates a virtualhost for you. Voila!
    # Author: William Donahoe - @ethicka
    #
    # Based off of http://www.ltconsulting.co.uk/automated-wordpress-installation-with-bash-wp-cli/
    #
    # Dependencies: wp-cli, virtualhost.sh, apg, git, npm, node, gulp, bower
    # Homebrew installation: brew install virtualhost.sh apg git node gulp bower
    #
    # Command: wp-start [site-name-slug]
    ##

    # set variables
    slug=$1
    WPUSER=''
    DBUSER=''
    DBPASSWORD=''
    ADMIN_EMAIL=''

    echo "Beginning WordPress Installation..."

    # Get the name of the folder
    read -e -p "Folder Name: " slug

    # Set the site path
    sitepath=~/Sites/$slug # you could change this to wherever you install your sites
    if [ ! -d "$sitepath" ]; then
    mkdir $sitepath
    fi
    cd $sitepath

    echo "The site path is $sitepath"

    # accept user input for the database name
    echo -n "Database Name: "
    read dbname

    # accept the name of our website
    echo -n "Site Name: "
    read sitename

    # add a simple yes/no confirmation before we proceed
    echo -n "Run Install? [y/n] "
    read run

    # if the user didn't say no, then go ahead an install
    if [ "$run" == n ] ; then
    exit
    else

    # download the WordPress core files
    wp core download

    # create the wp-config file with our standard setup
    wp core config --dbname=$dbname --dbuser=$DBUSER --dbpass=$DBPASSWORD --extra-php <<PHP
    define( 'WP_DEBUG', true );
    define( 'DISALLOW_FILE_EDIT', true );
    PHP

    # generate password using apg
    password=$(apg -n 1 -m 12 -M SNC)

    # copy password to clipboard
    echo $password | pbcopy

    # create database, and install WordPress
    wp db create
    wp core install --url="http://$slug" --title="$sitename" --admin_user="$WPUSER" --admin_password="$password" --admin_email="$ADMIN_EMAIL"

    # discourage search engines
    wp option update blog_public 0

    # delete sample page, and create homepage
    wp post delete $(wp post list --post_type=page --posts_per_page=1 --post_status=publish --pagename="sample-page" --field=ID --format=ids)
    wp post create --post_type=page --post_title=Home --post_status=publish --post_author=$(wp user get $WPUSER --field=ID --format=ids)

    # delete readme and license
    rm license.txt
    rm readme.html

    # set homepage as front page
    wp option update show_on_front 'page'

    # set homepage to be the new page
    wp option update page_on_front $(wp post list --post_type=page --post_status=publish --posts_per_page=1 --pagename=home --field=ID --format=ids)

    # set pretty urls
    wp rewrite structure '/%postname%/' --hard
    wp rewrite flush --hard

    # delete akismet and hello dolly
    wp plugin delete akismet
    wp plugin delete hello
    # you could also *install* some plugins here you use all the time, too.

    # install roots sage theme and remove .git folder
    cd $(wp theme path)
    git clone --depth=1 https://github.com/roots/sage.git $slug
    rm -rf $slug/.git
    wp theme activate $slug

    # delete other themes
    wp theme delete twentyfourteen
    wp theme delete twentyfifteen
    wp theme delete twentysixteen

    # install npm and bower and run gulp
    cd $(wp theme path)
    cd $slug
    echo "Installing Node Modules..."
    npm install
    echo "Installing Bower..."
    bower install
    echo "Running Gulp..."
    gulp

    # update manifest.json
    cd $sitepath/wp-content/themes/$slug/assets
    replace "http://example.dev" "http://$slug" -- manifest.json

    # Create a .gitignore and start a git in the wp-content folder
    cd $sitepath/wp-content

    # .gitignore
    echo "# Ignore themes except ours
    themes/*
    !themes/$slug/
    # Ignore all plugins
    plugins/*
    !plugins/soil/
    !plugins/soil/*
    # WordPress
    /index.php
    advanced-cache.php
    backup-db/
    backups/
    blogs.dir/
    cache/
    upgrade/
    uploads/
    wp-cache-config.php
    # Files
    *.log
    .DS_Store
    *.bak
    *.swp
    *.sublime*
    " > .gitignore

    # readme.md
    echo "# $sitename" > readme.md

    # first git commit
    git init
    git add .
    git commit -m "Initial commit"

    # install roots soil plugin and commit
    cd $sitepath
    cd wp-content
    git submodule add -f https://github.com/roots/soil.git plugins/soil
    wp plugin activate soil
    git add .
    git commit -m "Soil plugin"

    # site credentials
    echo "WordPress Username: $WPUSER" > site_credentials
    echo "WordPress Password: $password" >> site_credentials

    # finalize
    echo ""
    echo "###"
    echo "Installation is complete."
    echo "Username: $WPUSER"
    echo "Password: $password"
    echo "###"
    echo ""

    # set up the virtualhost
    virtualhost.sh $slug

    fi