 Boa tarde, pessoal. Todo mundo pronto aí para falar um pouquinho sobre WPCLI. Então assim, galera, meu nome é Marcos e eu vim aqui para falar com vocês sobre WPCLI. WordPress Common Line Interface. Quem é esse que você fala? Como eu pequeno ali, mas eu vou falando aqui para vocês. Meu nome é Marcos. Eu trabalho na StudioPress Hosting e lá nós temos muitas instalações WordPress para gerenciar. Mais de 60 mil instalações. Isso não quer dizer que você precisa ter esse tanto de instalação para você ter a necessidade de utilizar o WPCLI. Só o fato de você ter uma instalação já justifica utilizar essa ferramenta. Eu vou falar um pouquinho para vocês hoje o que é a ferramenta, para que a gente usa e como utilizar ela de uma forma bem básica e bem simples. Para aqueles que nunca utilizaram, descobrirem a ferramenta hoje e passarem a utilizar. É uma ferramenta de linha de comando, então necessariamente você precisa ter acesso ao Shell lá do seu servidor. Enfim, vamos lá então. O que a gente pode fazer com o WPCLI? O consumidor dizia que você pode fazer tudo o que você faz lá no admin, lá no teu dashboard. Para começar, sempre do início, se instala, atualiza o WordPress pela linha de comando. Você pode instalar e ativar temas, plugins, linguagens ou as línguas. Pode gerenciar os seus crons, os attachments. E uma das coisas que eu acho mais legal é o gerenciamento da base de dados. Pode fazer operações básicas no banco de dados de uma forma bem explícita. Não sei se vocês, quem mexe bastante com linha de comando, para você acessar lá o banco de dados, você vai lá mais que ele, menos um, nome de usuário e tal. É perigoso, de repente vai fazer um drop em uma base lá, você não precisa selecionar a base errada, vai lascar a sua instalação. Pode publicar posts, pode adicionar, remover, fazer update de usuários. Então basicamente tudo o que você pode fazer lá no teu dashboard, você pode fazer pela linha de comando. Ah, mas por que eu vou fazer em linha de comando? Quem tem o costume de utilizar a linha de comando sabe que é muito mais fácil, muito mais rápido para você gerenciar quando se tem duas ou mais instalações. Pensa assim, a gente lá tem 60 mil instalações e às vezes tem um problema, que a gente precisa fazer alguma atualização em todos esses servidores, todos esses sites e servidores. Eu vou ter que entrar lá no dashboard de cada um, sem chance. A gente faz, escreve um comandinho da VPCA lá e faz deploy em todas as instalações e roda em PSSH, então de 30 minutos está todo mundo atualizado com o que precisa. Instala em praticamente tudo, inclusive no Windows, não façam isso por favor, e funciona para frente do 3.5.2. Se alguém que está usando para baixo disso aqui também atualiza seu WordPress. Como é que eu instala esse cara? Extremamente simples, muito parecido com o Composer. Muito simples, faz um curlzinho lá, baixa o far, roda ele e instalou. Mais simples do que isso? Tem como instalar mais fácil? Tem. Se você está no Ubuntu, Thiago Rio, relemrando que está mantendo um repositório lá para o Ubuntu, então você nem precisa rodar isso aqui, adiciona o PPA dele aqui, roda o update, WP, apetiguete, instala o WP CLI. Ponto, instalado, rodando sem problema nenhum, de forma fácil e rápida. Agora aqui eu vou mostrar a instalação do WordPress. Como é que eu faço em linha de comando? Download, desculpe. WP Core Download. Configuração para criar o WP Config. WP Core Config e vou passar aquelas informações que geralmente você vai editar lá. O nome do banco, o nome do usuário, password e o host, que pode ser em outra máquina, uma máquina remota. Com esses dois passos feitos em qualquer diretório do seu servidor, basta rodar o Core Install, que ele vai terminar a instalação do seu WordPress. Você vai poder acessar o URL lá e vai estar rodando. Não vai precisar nem instalar o banco de dados lá, a famosa telinha lá dos cinco minutos. Não, já vai estar tudo pronto com o usuário já criado. Preciso fazer o update no WordPress para uma versão mais nova da WP Core Update. Quero testar o meu plugin em uma versão diferente da atual, da que está instalada. Coloco menos, menos version ali, passo o número da versão e digo força, isso aí. Eu quero essa aqui mesmo, ele vai baixar para você, vai colocar todos os arquivos lá bonitinho para o seu teste, roda um WP Core Update DB para garantir que ele vai estar a mesma versão dos arquivos com o banco de dados e pronto, pode testar. Terminei o teste, agora quero voltar para a última, WP Core Update, ponto. Simples, fácil, rápido, não preciso nem me preocupar com o usuário que está sendo executado. Por quê? Porque o WP se é lá e ele não roda como root. Ele te dá uma mensagem bem feia dizendo que você não pode, você precisa configurar ele para que ele rode com o usuário com permissões menores do que o root. Temas, posso procurar temas, WP Theme Search. Coloco ali qualquer coisa, ele vai me trazer os temas que ele encontrou com aquela prezinha que eu coloquei depois. Achei o tema que eu quero instalar, WP Theme Install Blades, nesse caso, vai baixar o tema e vai instalar. Ele não ativa por padrão, você pode passar uma flagzinha junto aqui, WP Theme Install, o nome do tema, menos, menos, activate, ele vai ativar automaticamente. Geralmente, é assim que eu uso, mas não é obrigatório. Listar os temas, bem interessante, tem muito cliente que instala 18 temas, não deixa nenhum ativo, é interessante, importante você manter isso fora, não deixar temas que não estão ativos rodando. Quando eu ativo um tema, ele me dá essa mensagem bonita e tem esse lance dos status aqui que te mostra algumas informações, adicionais, volta. E agora aqui uma coisa bem bacana, se você está com o tema instalado e ativado, ele não te permite remover o tema simplesmente com WP Theme Delete. Reparem aqui, gente, que é praticamente essa sintaxe, WP Funçãozinho, o que eu quero fazer com o objeto que eu quero fazer e a ação que eu quero tomar, praticamente todos os comandos seguem essa sintaxe. Quero apagar um tema, WP Theme Delete, nome do tema, slugzinha do tema. Nesse caso, ele não me permite porque ele está ativo, ativo o outro tema, manda ele apagar, segurança, se não vai complicar o teu meio de campo lá no seu site, vai acabar dando problema se ele apagar um tema que está ativo. Plugins, listando os plugins, procurando o plugin, gerenciando o output, reparem que ele tem esse menos-menos field aqui e eu posso determinar quais fields eu gostaria de ver na tela. Muita gente que não quer ver o rating. Para quem que eu quero saber o rating? Eu sei que aquele plugin que é bom e eu quero instalar ele. Não preciso ver. Essa field aqui é bem legal. Quais foram as versões, até qual versão que ele foi testado? Requerimento. Isso tudo eu posso gerenciar com esse menos-menos field, coloco cada field separadinha por vírgula. Perfeito. Gerenciam quantas entradas por página. Nada mais é que ele vai te mostrar aqui quais plugins ele encontrou. É bem interessante porque geralmente você coloca um termo genérico, aquele vai fazer uma busca e vai trazer muita coisa. Como foi esse caso aqui, 1.670 plugins. Para instalar mesmo a situação do tema, WP ao invés de tema plugin, instal, slugzinha do meu plugin. Também posso passar aqui o menos-menos activate para que ele ative automaticamente. E é bacana porque você pode usar o slug lá do repositório mesmo. Às vezes não precisa fazer o search. Está lá no WordPress.org, lá nos plugins. Olhou o slugzinho que está lá em cima no UI. Pode jogar aquele like que vai funcionar ali sem problema nenhum. Bem simples de utilizar. Se eu preciso, se eu instalo no meu ambiente de desenvolvimento, 5 plugins sempre, eu posso fazer um bash, colocar ele aqui e sempre manter ele instalado. Update de plugins, outra coisa bem importante que é uma tarefa que todo mundo faz em todos os sites. Ah, preciso fazer um update no plugin X, no plugin Y. Tenho dez instalações, vou ter que entrar nos dez dashboards? Não, não preciso. Eu posso rodar esse comando aqui nos meus diretórios e ele vai fazer essa atualização. Quero atualizar todos os meus plugins. Perfeito. WP plugin update, menos-menos all. Ponto. Todos os plugins serão atualizados. Isso aqui é uma coisa que eu acho muito maneiro. É muito bacana. WP plugin list, menos-menos nomezinho do field, igual o valor daquele field. Só vai me listar aqui os plugins onde o field update seja igual a valuable. Ah, eu quero saber quais são os plugins lá. Meu cliente tem 48 plugins instalados e eu quero saber quais são os plugins que necessitam a atualização. Se eu der um list, ele vai me trazer todos os plugins. Posso refinar a minha busca e trazer somente aqueles que realmente precisam de uma atualização. Da mesma forma que anteriormente ali, você pode manipular essa saída. Só me interessa, não me interessa qual é o status dele e nem se tem update. Quero saber a versão altero aqui e ponto. Vai me trazer só as fields que me interessam. Language packs, também é possível fazer instalação de linguagens. Geralmente, quando a gente faz instalação, a gente já seleciona e já vem aquela para o padrão, mas você também pode fazer. Reparem que lá, o menos-menos activate está lá também. Ele segue o mesmo padrão para praticamente todos os comandos. Você pode fazer essa atualização e ativar automaticamente para praticamente tudo. É muito sugestivo, muito simples de se utilizar. Mesma situação com o Chrome. O Chrome é um pouquinho diferente. Ele usa Chrome Event. Você pode listar quais são os Chrome que você tem lá. Pode remover, pode adicionar. Aqui uma coisa que é bem legal, que já me aconteceu muito, que é de migrar imagens de um lado para o outro e precisar carregar essas imagens. Sempre me deu muita dor de cabeça. Com o WP Media Import, fica muito fácil de importar uma mídia e adicionar seus metadados. Aqui até tem um bashzinho bem simples para você importar todas as imagens de uma instalação completa do WordPress. Aqui é mais para vocês repararem que ele gera a mídia e ainda gera as miniaturas. E aqui é a parte do banco de idade que eu acho bem legal. Está lá dentro, reparem aqui. Vai, WW, o nome da minha instalação. Está dentro da instalação e digita lá. WPDB Click. Ele abre o MySQL determinado que está dentro dessa instalação aqui. Ele vai lá, pega os dados do WP Config e sobe o CLI do MySQL com aquelas informações. Então, não é impossível eu manipular uma base de dados de outra instalação, por exemplo, em um ambiente shared, sendo que eu estou dentro do diretório que eu quero utilizar. Ficar bem mais simples e bem mais seguro do que eu ficar colocando usuário e senha. Às vezes, eu nem tenho essa senha na mão, eu preciso lá copiar e colar. Que não, eu entro no diretório, digito WPDB CLI e já estou lá, posso manipular e fazer todas as operações que eu faria no MySQL CLI normalmente. Mesma coisa com o WPDB Optimize, que é como se fosse um sin link para o MySQL Check, roda dali também. Reparem que eu não coloco nenhum outro parâmetro aqui para rodar isso. Isso quer dizer que ele está fazendo a otimização do banco de dados para dar essa instalação. Um ambiente shared, isso aqui é muito bacana. Não preciso ficar me preocupando com qual base de dados eu estou trabalhando. Simplesmente, entro no diretório e rodo comando. Exportar um banco de dados. Simples para caramba. Da WPDB Export, o nome do arquivo que eu quero dar pode ser qualquer coisa, ele vai exportar para importar tão simples quanto muito fácil para você fazer uma migração, não serve, isso aqui é muito interessante, muito tranquilo. Posso executar as queries sem nem abrir o CLI. WPDB query, executa a minha query, ele vai trazer os resultados na tela. Super simples, super fácil, super rápido. Posso listar as tabelas do banco de dados de uma forma simples. Posso recetar o meu banco de dados. Não quero mais nada, quero começar do zero. WPDB recete menos-menos-guesse para dizer assim não, pode apagar tudo, não tem problema. Aqui, só um parêntese, que essa função aqui, WPDB recete, ela dropa o seu banco e recria. Qual que é o problema com relação a isso? Se você tiver um outro sistema instalado ali no seu no seu instalação WordPress, que tem tabelas que não façam parte do esquema da base de dados do WordPress, elas vão ser perdidas. É bem importante ficar esperto com isso. Se você for usar o WPDB recete por algum motivo, tem em mente que você fazer um export da sua base de dados, nem sempre ele vai fazer um export da sua base de dados com todas as tabelas. Vai ficar sempre ligado. Com isso. Search replace. Quem aqui já teve problema trocando o nome de Dominion? Ah cara, é sacanagem, né? Trocar Dominion, o cliente pediu para trocar Dominion da vontade de chorar. Com o WP CLI, não mais. Muito simples. WP search replace do que, pro que e posso colocar um skip columns e agora tem um skip tables também. Simples, é isso aqui galera. Em cinco minutos você troca o Dominion do site WordPress. Posso gerenciar também as options option get nome da minha option vai me listar elas aqui mais algumas options aqui posso fazer update delas também sem precisar abrir o banco de dados, fazer select update faço direto aqui no shell posso gerenciar usuários listo usuários instalados crio um usuário de forma super simples, super rápida super intuitiva mesmo a forma que posso gerenciar o que que eu vou ver aqui no meu output posso dar um flush no meu cache pela linha de comando ah, tenho 10 sites aqui preciso dar um clear no meu cache roda um bastezinho lá todos eles transientes posso apagar aqueles que estão expirados ou todos isso aqui é uma coisa legal quem aqui usa a estrutura diferente de post name aqui acho que nunca foi usado isso é só quem não sabia que dava pra trocar isso aqui você já consegue setar aquela estrutura pra post name em vez de ID alguma coisa ou a data por aqui mesmo só tem que rodar o rewrite flush listos posts posso gerenciar posts por aqui também tudo pela linha de comando posso criar um post da mesma forma gerenciar o que eu estou vendo no post posso editar aqui o post pela linha de comando vou editar um post ele vai abrir geralmente o seu editor padrão que acertado lá no caso normalmente é o vii bem simples de trabalhar com praticamente tudo pela linha de comando fácil e rápido inclusive mais seguro eu vou deixar aberto aqui pra perguntas pessoal alguém tem alguma pergunta eu preciso do microfone pra poder gravar a sua pergunta uma dúvida rápida tem algum comando pra trabalhar com os arquivos de template do CLI tem pode criar como se fosse um template pra plugin e pra tema é scaffold é o nome a procuradinha lá da WP CLI que ele vai te mostrar bem certinho a documentação ou WP menos menos help vai te mostrar todos os comandos necessários que existem é muito flexível você consegue inclusive você escreve o seu plugin e coloca duas ou três linhas pra você identificar que aquilo é um comando do WP CLI no seu plugin você consegue criar os seus comandos de forma simples bem rápida e é bem intuitivo também mais alguém