WP-CLI를 사용하여 WordPress 플러그인 설치, 업데이트 및 관리
게시 됨: 2022-07-26WP-CLI를 사용하면 WordPress 관리자에서 할 수 있는 거의 모든 작업을 명령줄에서 수행할 수 있습니다. 이는 많은 시간을 절약하고 보다 깨끗한 워크플로를 제공합니다. WP-CLI를 사용하여 WordPress 코어 관리, 테마 업데이트 실행, 다중 사이트 설치 관리 등을 할 수 있습니다. 이 기사에서는 가장 일반적인 사용 사례 중 하나인 WordPress 플러그인 관리에 집중할 것입니다.
WP-CLI 명령은 모두 같은 방식으로 구성됩니다. 항상 상위 명령(예: wp plugin
)과 하위 명령(예: install
)이 있으며 그 뒤에 매개변수와 스위치가 있습니다. 이 기사에서는 wp plugin
과 그 하위 명령에 집중할 것이지만 WP-CLI 명령 구조 가이드에서 더 자세한 설명을 볼 수 있습니다.
이 기사에서는 WP-CLI를 사용하여 플러그인을 설치하고 활성화하는 방법을 강조하여 wp plugin
명령을 예로 사용했습니다. 이 기사에서는 WordPress 명령줄 인터페이스를 사용하여 플러그인을 관리하는 방법에 대해 더 깊이 파고들 것입니다.
플러그인 설치 및 활성화
현재 wp plugin
부모 명령에 대한 16개의 공식 하위 명령이 있습니다. 이 섹션에서는 설치 및 활성화를 위한 하위 명령을 다룰 것입니다. 또한 단일 명령으로 플러그인을 설치하고 활성화하는 방법도 살펴보겠습니다. 또한 WordPress 플러그인 디렉토리 이외의 소스에서 플러그인을 설치하는 방법도 살펴보겠습니다.
최신 버전을 설치하려면 플러그인의 공식 슬러그 다음에 wp plugin install
를 입력하십시오.
wp 플러그인 설치 hello-dolly 헬로돌리 설치(1.7.2) https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip에서 설치 패키지 다운로드 중... 캐시된 파일 '/Users/eriktorsner/.wp-cli/cache/plugin/hello-dolly-1.7.2.zip' 사용 중... hello-dolly.1.7.2.zip의 진위 여부는 서명이 없기 때문에 확인할 수 없습니다. 포장을 풀고... 플러그인 설치 중... 플러그인이 성공적으로 설치되었습니다. 성공: 플러그인 1개 중 1개를 설치했습니다.
다음으로 wp plugin activate
명령을 사용하여 플러그인을 활성화합니다.
wp 플러그인은 hello-dolly를 활성화합니다. 플러그인 'hello-dolly'가 활성화되었습니다. 성공: 플러그인 1개 중 1개를 활성화했습니다.
플러그인 슬러그 검색
슬러그는 종종 플러그인 이름과 다릅니다. 슬러그는 WordPress 플러그인 디렉토리의 플러그인 URL에 표시되지만 명령줄을 고수하고 search
하위 명령을 사용하고 두 개의 매개변수와 해당 값을 사용하여 워크플로 속도를 높일 수 있습니다. --per-page=1
및 --fields=name,slug
.
선택적 --per-page
매개변수는 WP-CLI에 표시할 결과 수를 알려줍니다. 이 경우에는 하나만 표시됩니다. 이 매개변수를 지정하지 않으면 기본적으로 10개의 결과가 표시됩니다. 가장 관련성이 높은 결과만 보고 싶기 때문에 여기에 1
의 값을 지정했습니다.
--fields
매개변수는 WP-CLI가 API의 특정 필드(이 경우 플러그인의 이름 및 슬러그)를 요청하도록 지시합니다. 현재 버전 번호를 확인하기 위한 version
과 플러그인의 평점을 백분율 및 전체 rating
으로 표시하는 평점을 포함하여 여기에서 사용할 수 있는 다양한 값이 있습니다. 단일 필드의 결과만 표시하려는 경우 대신 --field=<field>
를 사용할 수 있습니다. wp plugin search
명령과 함께 --fields
또는 --field
매개변수를 사용해야 합니다.
wp 플러그인 검색 "wp 오프로드 미디어" --per-page=1 --fields=name,slug 성공: 66개 플러그인 중 1개를 표시합니다. +---------------------------------------------------------------- -------------------------------+--------------------- ------+ | 이름 | 민달팽이 | +---------------------------------------------------------------- -------------------------------+--------------------- ------+ | Amazon S3, DigitalOcean Spaces 및 Google Cloud Sto용 WP Offload Media Lite | amazon-s3-and-cloudfront | | 분노 | | +---------------------------------------------------------------- -------------------------------+--------------------- ------+
이 명령에 대한 응답은 목록이므로 --format
매개변수가 수행할 수 있는 작업을 보여줄 수 있는 좋은 기회입니다. WP-CLI에 JSON 형식으로 해당 목록을 제공하도록 요청한 다음 더 예쁜 형식을 위해 jq 유틸리티를 통해 파이프합니다. jq 유틸리티는 위의 링크에서 설치하거나 온라인으로 사용해 볼 수 있는 가벼운 명령줄 JSON 프로세서입니다. 반드시 생략 | jq
| jq
가 설치되어 있지 않은 경우 아래 명령에서 다운로드하십시오.
JSON 형식의 출력을 요청할 때 WP-CLI는 상태 메시지를 생략하므로 JSON이 손상되지 않습니다.
$ wp 플러그인 검색 "wp 오프로드 미디어" --per-page=1 --fields=name,slug --format=json | jq [ { "name": "Amazon S3, DigitalOcean Spaces 및 Google Cloud Storage용 WP Offload Media Lite", "슬러그": "amazon-s3-and-cloudfront" } ]
플러그인이 설치된 후 활성화하려면 wp plugin activate
다음에 플러그인의 공식 슬러그를 사용하십시오.
플러그인 설치 및 활성화 동시에
WP-CLI로 플러그인을 관리할 때 가장 큰 장점 중 하나는 단일 명령으로 플러그인을 설치하고 활성화할 수 있다는 것입니다. activate
는 wp plugin
과 함께 하위 명령으로 사용할 수 있지만 wp plugin install
명령과 함께 매개변수로도 사용할 수 있습니다.
# 플러그인 설치와 동시에 활성화 wp 플러그인 설치 --hello-dolly 활성화
특정 플러그인 버전 설치
테스트 목적으로 특정 버전의 플러그인을 설치하려는 경우는 드문 일이 아닙니다. WordPress 플러그인 디렉토리에서 원하는 버전을 계속 사용할 수 있는 한 적합한 버전을 선택할 수 있습니다.
# 특정 플러그인 버전 설치 wp 플러그인 설치 woocommerce --version=5.5.3
다른 위치에서 플러그인 설치
WordPress 플러그인 디렉토리는 플러그인을 얻을 수 있는 유일한 장소가 아닙니다. 파일 시스템에서 바로 플러그인을 설치할 수도 있습니다. 대부분의 경우 프리미엄 플러그인을 구입하면 zip 파일 형태로 초기 제공을 받게 됩니다. WP-CLI는 먼저 패키지를 추출할 필요 없이 해당 zip 파일을 직접 설치합니다.
# 다운로드 폴더에서 플러그인 설치 $ wp 플러그인 설치 ~/Downloads/advanced-custom-fields-pro.zip
설치하려는 플러그인이 URL에서 사용 가능한 경우에도 작동합니다. 요청 매개변수를 통해 자격 증명을 제공하거나 자체 서명된 인증서가 있는 서버에서만 액세스할 수 있습니다.
# URL에서 플러그인 가져오기 wp 플러그인 설치 http://www.hellfish.media/my-plugin.zip # ...또는 Amazon 버킷의 개인 파일: wp 플러그인 설치 https://s3.amazonaws.com/bucketname/my-plugin.zip?X-Amz-SignedHeaders=host&X-Amz-Expires=900&X-Amz-Signature=abc123 # 자체 서명된 인증서가 있는 내부 서버에서: wp 플러그인 설치 https://intranet.hellfish.media/my-plugin.zip --insecure
WP-CLI로 플러그인 업데이트
플러그인을 설치했으면 보안상의 이유로 업데이트를 유지하는 것이 중요합니다. 업데이트할 플러그인이 있는지 확인하려면 wp plugin list
명령을 실행할 수 있습니다.
wp 플러그인 목록 +-------------------------------+----------+------ -----+---------+ | 이름 | 상태 | 업데이트 | 버전 | +-------------------------------+----------+------ -----+---------+ | amazon-s3-and-cloudfront | 활성 | 사용 가능 | 2.6.1 | | 헬로돌리 | 활성 | 사용 가능 | 1.7.1 | | wunderdevmu | 필수 사용 | 없음 | 1.0 | +-------------------------------+----------+------ -----+---------+
이 경우 Hello Dolly 및 WP Offload Media 플러그인 모두 업데이트가 필요합니다. 당연히 update
라는 별도의 하위 명령이 있습니다.
하나씩 업데이트하거나 약간 게으른 상태에서 --all
스위치를 사용하여 한 번에 업데이트해야 하는 모든 것을 업데이트할 수 있습니다. update 명령의 기본 동작은 주요 버전 업그레이드를 포함하여 사용 가능한 최신 버전까지 업데이트하는 것입니다. 그러나 --minor
스위치를 사용하면 조금 더 주의하고 부 버전에 대해서만 업데이트할 수 있습니다. 예를 들어, 1.2.3에서 1.3.0으로 업데이트하도록 지시할 수 있지만 2.0.0으로 업데이트할 수는 없습니다. 우리 는 극도로 조심하고 --patch
스위치를 사용하여 업데이트를 패치로만 제한할 수 있습니다.
# 플러그인을 하나씩 조심스럽게 업데이트 wp 플러그인 업데이트 wp-offload-media wp 플러그인 업데이트 hello-dolly # 카우보이 접근 wp 플러그인 업데이트 --all # 좀 더 센스있게 wp 플러그인 업데이트 --all --minor # 매우 방어적 wp 플러그인 업데이트 --all --patch
참고: --minor
및 --patch
스위치는 플러그인이 의미 체계 버전 관리를 사용하고 있다고 가정합니다. 모든 플러그인이 이 작업을 수행하는 것과는 거리가 멀기 때문에 불쾌한 놀라움을 얻지 않도록 사용 중인 플러그인을 검색해야 합니다. --dry-run
옵션을 사용하면 명령이 올바른지 확인하고 확인할 수 있습니다.
# 단일 플러그인을 패치로 업데이트하는 테스트 wp 플러그인 업데이트 hello-dolly --patch --dry-run
--exclude=<plugin name>
매개변수는 업데이트에서 제외해야 하는 플러그인을 나타내는 데 사용됩니다. 플러그인 이름을 쉼표로 구분된 목록으로 포함하면 WP-CLI는 다른 플러그인을 그대로 두고 다른 모든 플러그인을 업데이트합니다.
wp 플러그인 업데이트 --all --exclude=hello-dolly 유지 관리 모드 활성화 중... https://deliciousbrains.com/my-account/download/7512/?version=2.6.2에서 업데이트 다운로드 중... 업데이트 압축을 푸는 중... 최신 버전 설치 중... 플러그인의 이전 버전을 제거하는 중... 플러그인이 성공적으로 업데이트되었습니다. 유지 관리 모드 비활성화 중... +--------------------------+-------------+-------- -----+---------+ | 이름 | 이전 버전 | 새로운 버전 | 상태 | +--------------------------+-------------+-------- -----+---------+ | amazon-s3-and-cloudfront | 2.6.1 | 2.6.2 | 업데이트됨 | +--------------------------+-------------+-------- -----+---------+
강제 플러그인 재설치
대부분의 프리미엄 플러그인에는 WP-CLI와도 잘 작동하는 자체 내장 업데이트 검사기가 함께 제공됩니다. 내 경험상 WordPress 관리 페이지를 통해 클릭 한 번으로 업데이트할 수 있는 모든 플러그인은 WP-CLI를 사용하여 업데이트할 수도 있습니다. 그러나 어떤 경우에는 서버의 올바른 위치에 넣어야 하는 새 버전의 zip 파일을 통해 업데이트가 제공됩니다. --force
스위치를 사용하여 플러그인을 강제로 다시 설치하여 이러한 종류의 업데이트를 적용할 수 있습니다.
# 플러그인을 강제로 재설치 wp 플러그인 설치 ~/Downloads/my-custom-plugin-v2.zip --force
자동 업데이트 활성화
버전 5.5부터 WordPress는 플러그인을 자동으로 업데이트할 수 있습니다. 각 개별 플러그인에 대해 자동 업데이트를 활성화해야 합니다. WP-CLI는 자동 업데이트에 대한 일괄 처리를 제공하지 않습니다. auto-updates
하위 명령을 사용하여 플러그인별로 개별적으로 수행해야 합니다. 다음 명령으로 어떻게 작동하는지 확인할 수 있습니다.
# 플러그인에 자동 업데이트가 활성화되어 있는지 확인 wp 플러그인 자동 업데이트 상태 hello-dolly # 자동 업데이트 활성화 wp 플러그인 자동 업데이트로 hello-dolly 활성화 # 다시 비활성화 wp 플러그인 자동 업데이트는 hello-dolly를 비활성화합니다.
플러그인 비활성화 및 제거
플러그인 설치, 활성화 및 업데이트는 가장 일반적인 작업이지만 WP-CLI가 처리할 수 있는 다른 플러그인 관리 작업이 있습니다.
WordPress 웹 사이트에서 문제를 일으키는 원인을 파악하려고 시도한 적이 있다면 첫 번째 단계 중 하나로 모든 플러그인을 비활성화하라는 조언을 받았을 것입니다. 웹 브라우저에서 대량 처리로 이 작업을 수행할 수 있지만 항상 긴장됩니다. --all
스위치를 사용하여 명령줄을 통해 수행하는 것을 선호합니다.
# 한 번에 모든 플러그인 비활성화 wp 플러그인 비활성화 --all # 그리고 다시 활성화 wp 플러그인 활성화 --all
플러그인을 완전히 제거하는 것도 WP-CLI를 사용하여 쉽게 수행됩니다. 명령줄과 브라우저를 통해 이 작업을 수행하는 것의 한 가지 차이점은 WP-CLI를 사용하면 비활성화 후크를 먼저 실행 하지 않고 플러그인을 제거할 수 있다는 것입니다. 비활성화 중에 WordPress를 충돌시키는 플러그인을 설치한 적이 있다면 이것이 왜 그렇게 유용한지 알 것입니다.
# 비활성화 및 제거 wp 플러그인 비활성화 hello-dolly --uninstall # 비활성화할 기회를 주지 않고 플러그인 제거 wp 플러그인 삭제 hello-dolly
플러그인 활성화 및 비활성화와 관련된 toggle
하위 명령도 있습니다. 활성화 상태를 뒤집거나 토글하여 현재 상태의 반대 방향으로 변경합니다. --network
를 추가하여 전체 다중 사이트 네트워크에 대해 플러그인을 켜거나 끌 수 있습니다.
플러그인 체크섬
WP-CLI에는 설치된 플러그인의 체크섬을 WordPress 플러그인 디렉토리의 동일한 플러그인 및 버전에 대한 체크섬과 비교할 수 있는 기능이 있습니다. 이것은 WordPress 설치의 플러그인 파일이 조작되었는지 확인하는 매우 효율적인 방법입니다. 그렇다면 해킹을 당했다는 강력한 표시입니다.
체크섬은 모든 유형과 크기의 입력을 받아 짧은 문자열로 변환할 수 있는 특수 컴퓨터 알고리즘입니다. 이 문자열은 일반적으로 약 20-40자 길이로 데이터베이스에 저장하기에 적합합니다. 이 결과 문자열을 해시, 서명 또는 역사적 이유로 체크섬이라고 합니다.
이러한 알고리즘을 고유하게 만드는 것은 입력에서 단일 문자가 변경되더라도 출력이 완전히 달라진다는 것입니다. 플러그인의 모든 파일을 체크섬 알고리즘에 하나씩 넣으면 전체 플러그인을 나타내는 하나의 작은 서명 또는 체크섬이 생깁니다.
플러그인의 새 버전이 WordPress 플러그인 디렉토리에 게시될 때마다 해당 특정 버전에 대한 체크섬이 계산되고 저장됩니다. 몇 달 후 해킹당하지 않았는지 다시 확인하고 싶을 때 WP-CLI에 플러그인의 체크섬을 계산하도록 요청하고 WordPress가 보관하는 원래 체크섬과 비교할 수 있습니다. 사용자 측에서 추가, 수정 또는 누락된 파일이 있는 경우 플러그인의 체크섬이 원래 체크섬과 다르며 WP-CLI가 이에 대해 약간의 소음을 냅니다.
이 해시 검사 마법을 처리하는 하위 명령을 verify-checksums
이라고 하며 본질적으로 "내 플러그인이 WordPress 플러그인 디렉토리에서 가져온 이후로 변경되지 않았습니까?"라고 묻는 것과 같습니다.
# 단일 플러그인 확인 wp 플러그인 확인 체크섬 hello-dolly 성공: 플러그인 1개 중 1개 확인됨 # 리포지토리에서 가져온 모든 플러그인을 확인합니다. wp 플러그인 확인 체크섬 --all
이것은 공식 WordPress 플러그인 디렉토리에서 설치된 플러그인에서만 작동하므로 프리미엄 플러그인은 이 명령으로 확인되지 않습니다. verify-checksums
하위 명령은 wp core
에도 존재하지만 WordPress 테마를 확인하는 데 사용할 수 없습니다.
스크립팅 명령
지금까지 우리가 다룬 명령은 WordPress 플러그인을 관리해야 하는 모든 사람에게 유용합니다. 내가 다룰 마지막 wp plugin
하위 명령 세트는 주로 Bash 스크립트에서 사용하기 위한 것이므로 WordPress 개발자에게 주로 관심이 있습니다.
먼저 Unix 종료 코드에 대해 조금 이야기할 필요가 있습니다. Unix 시스템에서 실행을 종료하는 모든 프로그램은 종료 코드와 함께 반환됩니다. 표준 해석은 종료 코드 0
은 프로그램이 정상적으로 완료되었음을 의미하고 0이 아닌 종료 코드는 오류가 발생했음을 나타냅니다.
오류 코드는 if/else
문 및 기타 분기 형식에서 사용하기 위해 쉘 스크립트에서 자주 사용됩니다. 명령 프롬프트에서 정상적으로 명령을 실행할 때 종료 코드가 표시되지 않지만 $?
를 사용하여 항상 찾을 수 있습니다. :
# 작동하는 것을 실행하고 종료 코드를 얻습니다. 데이트 에코 $? 0 # 실패한 것을 실행 ls /존재하지 않는 폴더 ls: /idongfdg: 해당 파일이나 디렉토리가 없습니다. 에코 $? 1
WP-CLI에는 주로 무언가를 확인하고 유용한 종료 코드를 반환하기 위한 명령이 많이 있습니다. wp plugin
명령에는 is-installed
및 is-active
라는 두 가지 하위 명령이 있어 특정 플러그인이 설치 및 활성화되었는지 확인할 수 있습니다.
# hello-dolly가 설치되어 있는지 확인(있다) wp 플러그인이 설치된 hello-dolly 에코 $? 0 # 헬로돌리를 제거하고 다시 확인 wp 플러그인 삭제 hello-dolly wp 플러그인이 설치된 hello-dolly 에코 $? 1 # 우커머스 활성화 여부 확인 wp 플러그인 is-active 우커머스 에코 $? 0 # 우커머스 비활성화 wp 플러그인 우커머스 비활성화 wp 플러그인 is-active 우커머스 에코 $? 1
위의 명령을 사용하여 특정 플러그인의 설치/활성화 여부에 따라 다른 작업을 수행하는 Bash 스크립트를 작성할 수 있습니다.
내가 의심하는 마지막 하위 명령은 주로 스크립팅 목적으로 path
입니다. 이 명령은 단순히 플러그인의 기본 PHP 파일에 대한 경로를 반환하고 결과적으로 플러그인 폴더도 반환합니다. 이것을 다른 Bash 속임수와 결합할 수 있습니다. 예를 들면 다음과 같습니다.
# woocommerce 플러그인 폴더에 있는 모든 파일 표시 ls -al $(dirname $(wp 플러그인 경로 woocommerce))
이것은 일상적인 명령줄 작업에서는 그다지 유용하지 않지만 스크립트를 작성할 때 확실히 편리하고 플러그인 경로를 얻어야 합니다.
결론
보시다시피 명령줄을 통해 WordPress 플러그인을 관리하면 속도가 빨라지고 많은 일반적인 작업이 훨씬 간단해집니다. 플러그인 관리와 관련하여 가장 일반적인 작업을 다루었지만 직접 더 자세히 살펴보는 것이 좋습니다. 곧 WP-CLI의 기능이 플러그인을 훨씬 뛰어넘어 WordPress 관리자에서 할 수 있는 거의 모든 작업을 훨씬 더 빠르게 수행할 수 있다는 것을 알게 될 것입니다.
wp plugin
명령을 사용하는 방법에 대한 좋은 예가 있습니까? 댓글로 알려주세요.