Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Instalação automatizada do WordPress em pt-BR com WP-CLI e bash. Explicações em http://felipeelia.com.br/wp-cli-e-bash-automatizando-instalacao-do-wordpress-em-pt-br/
#!/bin/bash -e
clear
echo "================================================================="
echo "Instalador do WordPress em pt-BR"
echo "================================================================="
# pede ao usuário que informe o nome do banco de dados
echo "Nome do banco de dados: "
read -e nome_db
# pede ao usuário o nome do site
echo "Nome do site: "
read -e nome_site
# pede ao usuário o nome do usuário administrador do WordPress
echo "Nome do usuário: "
read -e nome_usuario
# pede ao usuário o nome do tema (os arquivos serão copiados do nosso starter theme)
echo "Nome do tema (slug). Deixe em branco para não copiar o tema: "
read -e nome_tema
echo "Instalar? (s/n)"
read -e run
# se o usuário informar qualquer coisa diferente de s, sai do script
if [ "$run" != s ] ; then
exit
else
clear
# faz o download dos arquivos do WordPress
wp core download --locale=pt_BR
# cria o arquivo wp-config.php
# host como ip por incompatibilidade do meu PHP cli
wp core config --dbhost=127.0.0.1 --dbname=$nome_db --dbuser=root --dbpass= --locale=pt_BR --extra-php <<PHP
define( 'WPCF7_AUTOP', false );
PHP
# define a url do site. No meu caso é tudo depois de htdocs/
diretorio_atual=${PWD##*/htdocs/}
# gera uma senha aleatória com 12 caracteres (será exibida na finalização da instalação)
senha=$(LC_CTYPE=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= < /dev/urandom | head -c 12)
# cria o banco de dados e instala o WordPress
wp db create
wp core install --url="http://localhost/$diretorio_atual" --title="$nome_site" --admin_user="$nome_usuario" --admin_password="$senha" --admin_email="email@dominio.com"
# exclui a página de exemplo e cria outra para página inicial
# TODO: não seria melhor editar a que já existe?
wp post delete $(wp post list --post_type=page --posts_per_page=1 --post_status=publish --pagename="pagina-exemplo" --field=ID --format=ids)
wp post create --post_type=page --post_title="Página inicial" --post_status=publish --post_author=$(wp user get $nome_usuario --field=ID)
# define a página inicial como página estática
wp option update show_on_front 'page'
# define como página inicial a página criada anteriormente
wp option update page_on_front $(wp post list --post_type=page --post_status=publish --posts_per_page=1 --pagename="pagina-inicial" --field=ID --format=ids)
# define a estrutura dos links permanentes
wp rewrite structure '/%postname%/' --hard
wp rewrite flush --hard
# exclui os plugins akismet e hello dolly
# wp plugin delete akismet
# wp plugin delete hello
# instala os plugins que mais usamos
wp plugin install custom-field-suite --activate
wp plugin install cfs-auto-loop-label --activate
wp plugin install cfs-cf7 --activate
wp plugin install wordpress-seo --activate
# baixa, atualiza as traduções e ativa, para as mensagens do primeiro form já serem sem portugues
wp plugin install contact-form-7
wp core language update
wp plugin activate contact-form-7
clear
# cria um menu
wp menu create "Menu principal"
# copia e ativa o nosso starter theme para o projeto
if [[ ! -z $nome_tema ]] ; then
cp -a ~/htdocs/projetos/_util/wp-starter-theme/. ./wp-content/themes/"$nome_tema"/
wp theme activate "$nome_tema"
#substitui a string 'starter' pelo nome do tema nos arquivos
grep -rl starter ./wp-content/themes/"$nome_tema"/ | xargs sed -i s/starter/"$nome_tema"/g
# coloca o menu criado como o menu do tema
wp menu location assign menu-principal menu-principal
# exclui os temas originais
wp theme delete twentyfifteen
wp theme delete twentysixteen
wp theme delete twentyseventeen
fi
# copia o searchreplacedb para a migração
cp -a ~/htdocs/projetos/_util/searchreplacedb/. ./searchreplacedb/
clear
echo "================================================================="
echo "A instalação está completa. Anote seus dados de login:"
echo ""
echo "Usuário: $nome_usuario"
echo "Senha: $senha"
echo ""
echo "================================================================="
# abre o site no Google Chrome
google-chrome -a "http://localhost/$diretorio_atual/wp-login.php"
# abre os arquivos no Atom
atom -n -f . &
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment