wp-cli 사용하기 #1

의식의 흐름대로 흘러가는 1일 1워프 중이다. 적당히, 진짜 적당껏 분량 조절해서 하루에 하나씩 원하는 내용을 적는 중이다.

오늘은 드디어 wp-cli의 이야기를 하게 된다. 워드프레스 개발자로서 반드시 숙지해야 할 녀석, 그리고 할 이야기가 무지무지 많은 녀석이다.

소개

워드프레스의 여러 명령을 커맨드라인으로 수행시키게 해 주는 고마운 녀석이다. 이로 인해 워드프레스의 여러 작업을 자동화 처리가 가능해졌다. 대충 라라벨의 artisan 이나 장고의 manage.py 같은 녀석이라고 볼 수도 있겠다.

할 수 있는 작업의 범위는 매우 다양해서 포스트를 조회, 생성, 삭제하는 것 뿐만 아니라 워드프레스 관리자 화면에서 할 수 있는 모든 것과 그 이상의 유용한 명령어까지 수행할 수 있는 유용한 툴이 되겠다. 워드프레스로 개발을 하는데, wp-cli를 모른다거나 설치하지 않고 있다면… 반드시 설치하기 바란다. 반드시!

설치하기

wp-cli 웹사이트의 Quick links 부분에 Installing이라는 부분이 있다. 여기를 누르거나 페이지를 조금만 내리면 Installing 섹션을 바로 찾을 수 있을 것이다.

이거 모르면 은근히 헤맨다.

이 포스팅에서도 설치 방법을 대략 요약하자면,

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar php wp-cli.phar --info chmod +x wp-cli.phar mv wp-cli.phar ~/bin/wp
Code language: Bash (bash)

정도가 되겠다. 이제부터 wp-cli 명령은 wp라고 하겠다. ~/bin 디렉토리는 적당히 환경에 맞춰 조절하고, PATH에는 반드시 등록해 두자.

명령어 완성까지 설치

쉘 완성 구문까지 같이 설치해 보는 것을 권장한다. 많이 편해진다. Tab completions 부분을 참고해 이 부분까지 같이 해 두자.

귀찮은 에러 피하기

일부 사이트에서는 wp를 실행만 해도 warning이나 notice가 왕창 출력될 수 있다. 테마, 혹은 플러그인 등에서 PHP의 경고 메시지를 무시하고 코드를 작성했기 때문이다. 이런 부분을 피해서 코드를 작성할 수 있음에도 그러지 않는 프로그래머에게는 욕을 한바탕 하고 싶지만… 참자.

wp를 사용할 때는 별다른 warning이나 notice 같은 것이 나오지 않는 것이 좋다. 뭐 나온다 하더라도 동작에 큰 문제가 없을지 모른다. 하지만 명령어를 사용하는 사람이 그런 메시지를 봐야 하기 때문에 작업이 피곤해진다.

이렇게 출력이 피곤하게 나올 때는 –skip-plugins, –skip-themes 옵션을 사용해 보자. 예를 들어 akismet, debug-bar 플러그인과 twentytwentyone 테마를 제외하고 실행하려면

wp --skip-plugins=akismet,debug-bar --skip-themes=twentytwentyone ...

이렇게 해서 특정 테마나 플러그인을 제외하고 실행할 수 있다. 그 테마나 플러그인이 반드시 필요한 작업이 아니라면 빼두자. 이런 메시지를 방치하고 출시하는 제작사는 좀 반성해야 한다.

사용자 만들기

오늘 포스팅은 실무에서 유용한 wp 명령어 위주로 설명하려 했는데, 워낙 이 녀석이 유용하다보니 할 말이 많아져버렸다. 차차 포스팅하기로 하고 오늘은 맛보기로 가장 유용한 명령어 중 하나라고 할 수 있는 사용자 만들기부터 시작하자.

이 명령어는 개발 요청을 받아 최초로 해당 사이트에 쉘 권한을 얻어 접근했을 때 개발자가 활동 가능한 계정을 생성할 때 유용하다. 이런 일은 항상 발생하므로 정말정말 유용하다. 아래 명령대로 한다.

wp user create --prompt
Code language: Bash (bash)

원래의 wp user create라면 옵션으로 여러 파라미터를 집어넣어야 하지만, 여러 옵션을 일일이 치는게 오히려 더 귀찮으니 그냥 쉘로 하나하나씩 입력받아 진행한다. 대략 아래와 같은 작업을 진행하게 된다.

$ wp user create --prompt 1/15 <user-login>: guest 2/15 <user-email>: guest@email.com 3/15 [--role=<role>]: administrator 4/15 [--user_pass=<password>]: guest-password 5/15 [--user_registered=<yyyy-mm-dd-hh-ii-ss>]: 6/15 [--display_name=<name>]: 7/15 [--user_nicename=<nice_name>]: 8/15 [--user_url=<url>]: 9/15 [--nickname=<nickname>]: 10/15 [--first_name=<first_name>]: 11/15 [--last_name=<last_name>]: 12/15 [--description=<description>]: 13/15 [--rich_editing=<rich_editing>]: 14/15 [--send-email] (Y/n): n 15/15 [--porcelain] (Y/n): n Success: Created user 2.
Code language: HTML, XML (xml)

깔끔하다! 관리자 페이지에 들어가 일일이 마우스를 클릭하면서 긴긴 페이지 로딩을 기다릴 것도 없고, 애초에 그 관리자 페이지를 접속하기 위한 계정조차 필요 없다. 애초에 해당 워드프레스에 대한 쉘 접속이 가능한 시점부터 보통은 거의 멋대로 사이트를 주무를 수 있는 상황이니까.

오늘 포스팅은 여기까지 하자. 다음 포스팅에 좀 더 유용한 wp 명령어들을 소개하도록 한다.

댓글 남기기