데브포일 홈
WordPress 자동화
Guest
STAGE 13 · Lv.65

플러그인 배포와 업데이트

WordPress.org SVN 저장소 배포, readme.txt 작성, 플러그인 심사 프로세스, 자동 업데이트 시스템, 커스텀 업데이트 서버 구축까지 플러그인 배포의 모든 것을 배웁니다.

WordPress.org 플러그인 배포 전체 과정
플러그인 배포의 의미와 가치
WordPress.org 공식 플러그인 저장소에 플러그인을 배포하면 전 세계 수억 개의 WordPress 사이트에서 대시보드 검색만으로 바로 설치할 수 있게 됩니다. 이는 단순한 코드 공유를 넘어서 글로벌 개발자 커뮤니티에 기여하고, 개인 또는 회사의 브랜드를 알리며, 프리미엄 버전의 마케팅 채널로도 활용할 수 있는 강력한 기회입니다.

WordPress.org 플러그인 저장소는 Git이 아닌 SVN(Subversion)을 사용합니다. 이는 역사적인 이유로, WordPress 자체가 SVN으로 관리되던 시절부터 이어져 온 것입니다. 현대의 많은 개발자들은 Git(GitHub, GitLab 등)으로 개발하고, SVN으로 배포하는 하이브리드 워크플로우를 사용합니다. GitHub Actions를 활용하면 Git 태그 푸시만으로 WordPress.org SVN에 자동 배포할 수도 있습니다.

배포 과정은 크게 네 단계로 진행됩니다. 첫째, WordPress.org에 플러그인 심사를 제출합니다. 둘째, WordPress 플러그인 리뷰팀이 코드를 검토합니다(보통 1-10일 소요). 셋째, 승인 후 SVN 저장소 접근 권한을 받아 코드를 업로드합니다. 넷째, 이후 버전 업데이트를 지속적으로 관리합니다. 한번 승인을 받으면 이후 업데이트는 심사 없이 직접 SVN에 커밋하여 즉시 반영됩니다.
📝
심사 제출
wordpress.org/plugins
🔎
코드 리뷰
1~10일 소요
📦
SVN 업로드
trunk + tags
🌐
공개 배포
자동 업데이트
📊
60,000+
WordPress.org 등록 플러그인
1~10일
평균 심사 기간
💰
무료
배포 비용 (완전 무료)
📈
GPL v2+
필수 라이선스
심사 제출 전 준비 사항
WordPress.org에 플러그인을 제출하기 전에 다음 사항을 반드시 확인해야 합니다. 준비가 미흡하면 심사에서 거절되어 다시 제출해야 하며, 이 경우 추가 대기 시간이 발생합니다.

필수 파일: 메인 플러그인 파일(플러그인 헤더 포함), readme.txt(WordPress 전용 형식), 라이선스 파일(LICENSE 또는 license.txt). 선택적으로 uninstall.php(삭제 시 데이터 정리)를 포함합니다.

플러그인 헤더: 메인 PHP 파일 상단에 반드시 표준 플러그인 헤더를 포함해야 합니다. Plugin Name, Description, Version, Author, License, Text Domain은 필수 항목입니다.

코딩 표준: WordPress Coding Standards를 따라야 합니다. PHPCS(PHP CodeSniffer)와 WordPress-Coding-Standards 규칙셋을 사용하여 사전 검사를 실행하세요. 또한 모든 사용자 입력에 대해 sanitize/escape를 적용하고, DB 쿼리는 반드시 prepare()를 사용해야 합니다.

국제화(i18n): 모든 사용자에게 보이는 문자열은 __(), _e(), esc_html__() 등의 번역 함수로 감싸야 합니다. Text Domain은 플러그인 슬러그와 동일해야 합니다.
// 플러그인 메인 파일 헤더 (필수 형식) /** * Plugin Name: My Awesome Plugin * Plugin URI: https://example.com/my-awesome-plugin * Description: 사이트에 멋진 기능을 추가하는 플러그인입니다. * Version: 1.0.0 * Requires at least: 6.0 * Requires PHP: 7.4 * Author: Your Name * Author URI: https://example.com * License: GPL v2 or later * License URI: https://www.gnu.org/licenses/gpl-2.0.html * Text Domain: my-awesome-plugin * Domain Path: /languages */ // 직접 파일 접근 차단 (필수) if (!defined('ABSPATH')) { exit; } // 플러그인 상수 정의 define('MAP_VERSION', '1.0.0'); define('MAP_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('MAP_PLUGIN_URL', plugin_dir_url(__FILE__)); define('MAP_PLUGIN_BASENAME', plugin_basename(__FILE__)); // 활성화/비활성화 훅 register_activation_hook(__FILE__, 'map_activate'); register_deactivation_hook(__FILE__, 'map_deactivate'); function map_activate() { // DB 테이블 생성, 기본 옵션 설정 등 add_option('map_version', MAP_VERSION); flush_rewrite_rules(); } function map_deactivate() { // 크론 스케줄 제거 등 (데이터는 삭제하지 않음) wp_clear_scheduled_hook('map_daily_cron'); }
readme.txt 완벽 작성 가이드
readme.txt의 중요성과 작성 원칙
readme.txt는 WordPress.org 플러그인 페이지에 표시되는 모든 정보의 원본입니다. 플러그인 설명, 스크린샷 캡션, FAQ, 변경 로그 등이 이 하나의 파일에서 생성됩니다. readme.txt가 잘 작성되면 다운로드 수에 직접적인 영향을 미치므로, 코드만큼이나 중요하게 다루어야 합니다.

WordPress의 readme.txt는 일반 Markdown과 다른 자체 형식을 사용합니다. 헤더 섹션은 = 기호로 감싸고, 리스트는 별표(*)를 사용합니다. 제목 계층은 ==과 =으로 구분합니다. WordPress.org의 readme validator(https://wordpress.org/plugins/developers/readme-validator/)를 활용하여 형식 오류가 없는지 검증하세요.

SEO 관점: 플러그인 제목(Plugin Name)과 Tags는 WordPress.org 내부 검색에 직접 영향을 미칩니다. Short Description(첫 번째 문단)은 검색 결과에서 플러그인 이름 바로 아래에 표시되므로, 핵심 기능과 차별점을 150자 이내로 명확히 작성하세요.
=== My Awesome Plugin === Contributors: your-wp-username, co-developer Donate link: https://example.com/donate Tags: automation, seo, performance, cache, optimization Requires at least: 6.0 Tested up to: 6.7 Requires PHP: 7.4 Stable tag: 1.2.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html WordPress 사이트의 성능을 자동으로 최적화하고 SEO를 강화하는 올인원 플러그인입니다. == Description == My Awesome Plugin은 WordPress 사이트를 더 빠르고 검색 엔진에 최적화된 상태로 만들어줍니다. = 주요 기능 = * 자동 이미지 최적화 (WebP 변환, 지연 로딩) * 페이지 캐시 및 브라우저 캐시 관리 * 메타 태그 자동 생성 및 구조화 데이터 삽입 * Core Web Vitals 실시간 모니터링 * 다국어 지원 (한국어, 영어, 일본어) = Pro 버전 기능 = * CDN 자동 연동 * 고급 캐시 프리워밍 * 우선 기술 지원 * [Pro 버전 알아보기](https://example.com/pro) = 요구 사항 = * WordPress 6.0 이상 * PHP 7.4 이상 * MySQL 5.7 이상 또는 MariaDB 10.3 이상 == Installation == 1. WordPress 관리자 > 플러그인 > 새로 추가에서 "My Awesome Plugin"을 검색합니다. 2. "지금 설치"를 클릭한 후 "활성화"합니다. 3. 설정 > My Plugin에서 기본 설정을 완료합니다. 4. (선택) 고급 설정에서 캐시 및 SEO 옵션을 커스터마이즈합니다. = 수동 설치 = 1. 플러그인 ZIP 파일을 다운로드합니다. 2. WordPress 관리자 > 플러그인 > 새로 추가 > 플러그인 업로드를 클릭합니다. 3. ZIP 파일을 선택하고 "지금 설치"를 클릭합니다. 4. "활성화"를 클릭합니다. == Frequently Asked Questions == = 이 플러그인은 무료인가요? = 네, 핵심 기능은 완전히 무료입니다. GPL v2 라이선스로 배포됩니다. 고급 기능이 필요하시면 Pro 버전을 확인해주세요. = WooCommerce와 호환되나요? = 네, WooCommerce 7.0 이상과 완벽히 호환됩니다. 상품 페이지의 SEO 최적화와 캐시 관리를 자동으로 처리합니다. = 다른 캐시 플러그인과 충돌하나요? = WP Super Cache, W3 Total Cache 등 일부 캐시 플러그인과 충돌할 수 있습니다. 동시 사용 시 하나의 캐시 플러그인만 활성화해주세요. == Screenshots == 1. 대시보드 화면 - 사이트 성능 현황을 한눈에 확인할 수 있습니다. 2. 설정 페이지 - 직관적인 설정 인터페이스로 간편하게 구성합니다. 3. SEO 분석 리포트 - 페이지별 상세 SEO 점수를 확인합니다. 4. 성능 모니터링 - Core Web Vitals 점수를 실시간으로 추적합니다. == Changelog == = 1.2.0 = * 추가: Core Web Vitals 실시간 모니터링 기능 * 개선: 캐시 프리워밍 성능 50% 향상 * 수정: PHP 8.2 호환성 문제 해결 * 수정: WooCommerce 8.5 호환성 확인 = 1.1.0 = * 추가: WebP 이미지 자동 변환 기능 * 추가: 구조화 데이터(Schema.org) 자동 삽입 * 개선: 관리자 UI 전면 리디자인 * 수정: 멀티사이트 환경 호환성 개선 = 1.0.0 = * 최초 릴리스 * 기본 캐시 관리 기능 * SEO 메타 태그 자동 생성 * 관리자 대시보드 == Upgrade Notice == = 1.2.0 = Core Web Vitals 모니터링과 성능 개선이 포함된 중요 업데이트입니다. = 1.0.0 = 최초 릴리스입니다. 설치 후 설정 페이지에서 초기 설정을 완료하세요.
⚠ readme.txt 핵심 주의사항
Stable tag 불일치 문제: readme.txt의 Stable tag 값은 tags/ 디렉토리의 해당 버전 폴더와 반드시 일치해야 합니다. WordPress.org는 이 값을 기준으로 배포할 ZIP 파일을 생성합니다. trunk의 readme.txt에 Stable tag: 1.2.0이라고 적었는데 tags/1.2.0/ 폴더가 없으면 이전 버전이 배포됩니다.

Tested up to 관리: WordPress 새 버전이 나올 때마다 이 값을 업데이트하세요. 현재 WordPress 버전과 차이가 2개 이상이면 플러그인 페이지에 "이 플러그인은 최신 3개의 WordPress 주요 릴리스에서 테스트되지 않았습니다"라는 경고가 표시되어 다운로드 수에 악영향을 줍니다.

Tags 제한: 최대 5개까지만 사용하세요. 초과 시 심사에서 지적받거나 검색 노출에 불이익이 있을 수 있습니다. 플러그인의 핵심 기능을 대표하는 태그만 선택하세요.

스크린샷 네이밍: screenshot-1.png, screenshot-2.png 순서로 assets/ 폴더에 넣어야 합니다. 파일명의 숫자는 readme.txt의 Screenshots 섹션 번호와 대응됩니다.
🔒
여기까지는 미리보기입니다
플러그인 배포와 업데이트
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)