WP-CLI

Usando o WP-CLI para atualizar vários posts ao mesmo tempo

Que bom seria se o "wp post update" aceitasse mais do que um post ID né? Ele aceita!

Já escrevi sobre o WP-CLI anteriormente aqui no blog, porém, gostaria de compartilhar sobre o comando post update hoje.

Durante anos, tenho usado o comando wp post update para atualizar um post de cada vez rodando o comando wp post update seguido pelo ID do post e o que desejo alterar.

$ wp post update 123 --post_author=456

O comando acima atualizará o post com ID 123 e aplicará o autor com ID 456 a ele.

Esse comando é bem eficiente, porém, quando é necessário aplicar as mesmas informações (autor do post, por exemplo) a mais de um post, rodar um comando para cada post ID torna-se algo extremamente maçante.

Atualmente, estes são os exemplos do comando wp post update na documentação do WP-CLI:

$ wp post update 123 --post_name=something --post_status=draft
Success: Updated post 123.

# Update a post with multiple meta values.
$ wp post update 123 --meta_input='{"key1":"value1","key2":"value2"}'
Success: Updated post 123.

Por focar nos exemplos da documentação, eu nunca dei muita atenção para a descrição do comando:

wp post update
Updates one or more existing posts.

Documentação do WP-CLI

Updates one or more existing posts = Atualiza um ou mais posts existentes.

Sim, apesar dos exemplos na documentação não cobrirem o uso do comando para editar mais do que um único post por vez (wp post delete tem exemplos com múltiplos posts), o comando wp post update pode editar vários posts ao mesmo tempo.

Que maravilha!
Agora não é mais necessário rodar o mesmo comando várias vezes trocando apenas o ID do post.

Exemplos de uso

Para atualizar mais de um post com apenas um comando, basta informar os IDs de cada post após update desta forma:

$ wp post update 123 456 --post_author=789
Success: Updated post 123.
Success: Updated post 456.

O comando acima editará o autor dos posts com IDs 123 e 456 para o autor 789.

Mas e se eu precisar alterar todos os posts de um determinado tipo de post? Você também pode fazer isso de uma só vez aninhando (um comando dentro de outro) dois comandos:

$ wp post update $(wp post list --post_type=page --format=ids) --post_author=123
Success: Updated post 123.
Success: Updated post 456.

Nesse comando, todas as páginas (--post_type=page) serão atualizadas para o autor 123.

Devolvendo para a comunidade

Para facilitar a vida de quem (assim como eu) presta mais atenção aos exemplos do que na descrição do comando, eu enviei um Pull Request adicionando os exemplos que mencionei à documentação do WP-CLI. No próximo release, os exemplos serão publicados 🙂

2 comentários

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

%d blogueiros gostam disto: