커뮤니티 보드 골드 데이터 매칭 오류 3건 수정 — 2026-03-14 골드 리브랜딩(points→gold) 과정에서 존재하지 않는 함수명(gbb_get_gold(), gbb_add_gold())을 호출하여 골드 기능이 작동하지 않던 버그 수정. ① 셀프핀 골드 0G 표시: 게시글 상단 고정 기능에서 내 골드가 항상 0G로 표시 → gbb_get_points()로 수정, 실제 잔액(238,837G) 정상 표시. ② 퀴즈 골드 미지급: 퀴즈 참여/정답 시 골드가 지급되지 않음 → gbb_add_point()로 수정. ③ 도전과제 골드 미지급: 도전과제 완료 시 골드가 지급되지 않음 → gbb_add_point()로 수정. 대상 파일: post-view.php, quiz-system.php, content-feed.php
MC 관리 응답 목록 — 답변 텍스트 복사 기능 — 관리자 응답 보기 페이지(/wp-admin/admin.php?page=gbmc-submissions&form_id=N)에서 각 답변 텍스트를 손쉽게 복사할 수 있는 기능 추가. ① 모든 답변 값(마크ID, 채널명, 이메일, 디스코드 등)을 readonly 필드로 렌더링하여 더블클릭 시 전체 텍스트 자동 선택. ② 각 답변 옆 📋 복사 버튼 클릭 시 navigator.clipboard.writeText() API로 클립보드에 즉시 복사, 구형 브라우저용 document.execCommand('copy') fallback 포함. ③ 복사 성공 시 버튼이 ✅로 1.5초간 변환되는 시각적 피드백. ④ 기존 다크 테마(#14141f 배경, #333 테두리, #8b5cf6 보라색 포커스)와 완전 통일. ⑤ 모바일 반응형 대응(@media max-width: 600px flex-wrap). 플러그인 v1.3.0→v1.3.1 (CSS/JS 캐시 버스팅)
MC 서버 내 신청 내역 — 승인 안내 메시지 미표시 수정 — /mc-server/?my=ID(내 신청 내역) 페이지에서 관리자가 안내 토글을 ON하고 메시지/URL을 설정해도 안내 콘텐츠가 전혀 표시되지 않던 문제 수정. 근본 원인: v1.3.0 리팩토링에서 안내 표시를 ?my=ID → ?form=ID로 이전하면서 ?my=ID 경로의 렌더링 코드가 누락됨. 승인 상태 카드 하단에 📢 안내 카드(메시지 본문 + 🔗 안내 페이지 바로가기 버튼) 추가. 승인 + 토글 ON + 메시지/URL 존재 시에만 조건부 표시
개선 1
MC 서버 내 신청 확인 — 승인 메시지 문구 수정 — /mc-server/?my=ID 페이지에서 승인 완료 시 표시되는 메시지를 "🎉 서버 화이트리스트에 등록되었습니다. 게임에서 접속해보세요!" → "🎉 서버 화이트리스트에 등록되었습니다."로 변경. 불필요한 안내 문구 제거하여 간결한 메시지 제공
MC 신청서 — 승인 회원 이메일 일괄 발송 — 관리자가 폼 빌더에서 이메일 제목·본문·안내 URL을 설정한 후, 신청서 목록(📧) 또는 응답 보기 페이지에서 승인된 모든 회원에게 이메일을 일괄 발송. {username}, {minecraft_id}, {url} 변수 지원, HTML 형식 이메일에 보라색 CTA 버튼 포함
MC 신청서 — 승인 회원 안내 메시지 (토글 제어) — 관리자가 폼 빌더에서 안내 메시지와 URL을 설정하고, 신청서 목록의 📢 토글 버튼으로 공개/비공개를 즉시 제어. ON 시 승인된 회원이 신청서 페이지(/mc-server/?form=ID)에 접속하면 📢 안내 뱃지 + 메시지 + 보라색 CTA 버튼이 표시됨. OFF 시 즉시 숨겨짐. 마감된 신청서에서도 동작
MC 신청서 목록 — 관리 액션 버튼 추가 — 신청서 목록에 📧(이메일 발송) / 📢(안내 ON) / 🔕(안내 OFF) 토글 아이콘 추가. 이메일 설정이 있고 승인 회원이 있는 경우에만 📧 표시, 안내 설정이 있는 경우에만 📢/🔕 표시
버그 수정 1
MC 신청서 — CSV 내보내기/응답 목록 심사자 표시 오류 수정 — 탈퇴한 사용자가 심사자인 경우 CSV 내보내기 및 응답 보기 페이지에서 오류가 발생하던 문제 수정
개선 2
MC 신청서 — 폼 삭제 시 이메일/승인/토글 설정 자동 정리 — 신청서 삭제 시 이메일·안내 메시지·토글 설정이 함께 삭제
MC 신청서 — 폼 복제 시 이메일/승인/토글 설정 함께 복제 — 신청서 복제 시 모든 관련 설정이 새 신청서에 자동 복제
MC 서버 내 신청 보기 — 하단 버튼 사이즈·정렬 통일 — /mc-server/?my=ID 페이지 하단의 "🚫 신청 취소"와 "← 목록으로 돌아가기" 두 버튼의 크기가 불균일하고 텍스트 정렬이 일관되지 않던 문제 수정. 근본 원인: (신청 취소)에 인라인 스타일(background:#ef4444;color:#fff;border:none)이 적용되고, (목록으로 돌아가기)는 .gbmcm-btn CSS 클래스만 사용하여 box model과 높이가 달랐음. 수정: ① .gbmcm-btn 기본 클래스를 display: inline-block → inline-flex + align-items: center + justify-content: center + text-align: center + box-sizing: border-box로 업그레이드하여 모든 버튼 텍스트 중앙 정렬 통일. ② .gbmcm-btn-danger 클래스 신규 추가(빨간색 위험 액션 버튼 전용, #ef4444, hover #dc2626). ③ .gbmcm-bottom-actions 클래스 신규 추가 — 하단 버튼 영역 flex 레이아웃 + 자식 .gbmcm-btn에 min-width: 160px + min-height: 44px 적용. ④ page-mc-server.php의 인라인 스타일 제거 → CSS 클래스 기반으로 전환. 데스크톱(1280px)/모바일(375px) 양쪽 검증 완료. 플러그인 v1.1.2→v1.1.3 (CSS 캐시 버스팅)
MC 서버 신청 폼 안내 문구 WYSIWYG 에디터 고도화 — 관리자 신청서 빌더(wp-admin > MC 관리 > 신청서 작성)의 안내 문구 필드를 단순 에서 WordPress WYSIWYG 에디터(TinyMCE)로 전면 교체. 이미지·영상·링크·서식(볼드/이탤릭/리스트/인용) 삽입 가능. 「미디어 추가」 버튼으로 WP 미디어 라이브러리 연동. 프론트엔드에서 HTML 콘텐츠를 wp_kses_post()로 안전하게 렌더링. .gbmcm-form-desc 내 링크(보라색)·이미지(반응형)·iframe·리스트·인용구 전용 다크 테마 CSS 추가. 플러그인 v1.0.12→v1.1.0
버그 수정 5
MC 서버 신청 폼 이스케이프 문자 노출 수정 — 폼 설명에 \"익숙한 그 맛...\" 처럼 역슬래시+쌍따옴표가 그대로 표시되던 문제 수정. 근본 원인: AJAX 저장 핸들러에서 $_POST 데이터에 stripslashes() 미적용 → WordPress magic quotes가 삽입한 역슬래시가 DB에 저장 → esc_html() 출력 시 그대로 노출. wp_kses_post(stripslashes()) 체인으로 수정, 기존 DB 데이터도 HTML로 정제하여 마이그레이션 완료
MC 서버 신청 폼 URL 자동 링크 변환 — 폼 설명 및 내 신청 보기 페이지에서 URL이 클릭 불가능한 일반 텍스트로 표시되던 문제 해결. gbmcm_autolink_urls() 헬퍼 함수로 URL 자동 감지 → 클릭 가능 링크 변환. URL 전체 표시(생략 없음), 새 탭 열기 + 보안 속성 자동 적용, 모바일 word-break: break-all
MC 관리 신청서 빌더 비주얼 에디터 기본 선택 수정 — 신청서 편집 시 안내 문구 에디터가 항상 「코드」 탭으로 열려 raw HTML이 노출되던 문제 수정. 근본 원인 2가지: ① wp_editor의 default_editor 옵션이 사용자 쿠키(wp-settings-{user_id}[editor])에 의해 무시됨 → wp_default_editor 필터로 쿠키 우회 강제 적용. ② 비주얼 탭이 CSS상 활성화(tmce-active)되어도 TinyMCE 인스턴스(iframe)가 실제로 초기화되지 않는 타이밍 이슈 → JS에서 switchEditors.go(editorId, 'tmce') 300ms 지연 호출로 강제 초기화. 페이지 로드 시 WYSIWYG 툴바 + 렌더링된 콘텐츠가 자동 표시
MC 서버 신청 폼 컨테이너 너비 최대 확장 — /mc-server/?form= 프론트엔드 폼이 좌우에 불필요한 간격이 있어 최대 너비로 확장되지 않던 문제 수정. 근본 원인: 플러그인 .gbmcm-front-container의 자체 패딩(padding: 0 16px, 모바일 0 10px)이 테마 #content.container-wrapper의 패딩(20px)과 중첩되어 좌우 총 36px 간격 발생. .gbmcm-front-container 패딩을 0으로 제거하여 부모 컨테이너 내 가용 너비 전체 사용. 플러그인 v1.1.0→v1.1.1 (캐시 버스팅)
MC 서버 신청 폼 유튜브 자동 임베드 + URL 자동 링크 — /mc-server/?form= 프론트엔드 신청서에서 관리자 에디터(TinyMCE)로 입력한 유튜브 URL이 일반 텍스트로만 표시되고 임베드 플레이어가 나오지 않던 문제 수정. 수정: 커뮤니티 보드 gbb_auto_embed() 로직을 MC 관리 플러그인용 gbmcm_auto_embed() 경량 엔진으로 구현. YouTube 태그 링크 → iframe 임베드, 평문 YouTube URL → iframe 임베드, 일반 URL → 클릭 가능 링크(target="_blank"), 외부 링크 target="_blank" 자동 부여, 중복 임베드 방지. .gbmcm-embed-youtube 반응형 16:9 CSS 추가. 유튜브 플레이리스트 URL은 개별 영상이 아니므로 클릭 링크로 유지. wp_kses_post() → gbmcm_auto_embed(wp_kses_post()) 체인 적용. 플러그인 v1.1.1→v1.1.2 (캐시 버스팅)
MC 신청서 필드 설명/입력 힌트 — URL 자동 링크 변환 — 폼 빌더에서 필드의 설명(description) 및 입력 힌트(placeholder)에 URL을 입력하면 프론트엔드 신청서 페이지(/mc-server/?form=3)와 내 신청 확인 페이지(/mc-server/?my=3)에서 클릭 가능한 링크( 태그)로 자동 변환. 기존 gbmcm_autolink_urls() 헬퍼 함수를 재사용하여 esc_html() 처리 후 URL 패턴 감지 → 보라색(#a78bfa) 밑줄 링크 생성. target="_blank" 새 탭 열기 + rel="noopener noreferrer" 보안 속성 자동 적용. 적용 범위: ① 신청 폼 필드 설명 ② 내 신청 확인 필드 설명 ③ 내 신청 확인 입력 힌트
MC 관리 신청서 목록 — 📊(응답 보기)/📥(CSV) 버튼 항상 노출 — 기존에는 submission_count(pending+approved만 카운트) 조건으로 버튼을 표시하여, 전부 취소되거나 아직 신청이 없는 경우 상세보기/CSV 버튼이 숨겨짐. 관리자가 취소된 신청 내역을 확인할 수 없는 심각한 접근성 문제. 수정: 조건문 제거 → 📊📥 버튼을 신청 건수와 관계없이 항상 표시
개선 1
MC 신청서 이메일 필드 자동 입력 — 신청 폼에 email 타입 필드가 있으면 회원의 가입 이메일(wp_get_current_user()->user_email)을 자동 입력. 하단에 "회원 정보에서 자동 입력됨" 안내 라벨 표시. 마인크래프트 ID·치지직 자동 입력과 동일한 UX 패턴 적용
MC 폼 빌더 — 저장 시 field_id 변경으로 submission 데이터 JOIN 깨짐 수정 — 폼 빌더에서 신청서를 저장할 때마다 기존 필드를 DELETE 후 INSERT하여 form_fields.id(AUTO_INCREMENT)가 바뀌고, 기존 submission_data.field_id 참조가 깨져 "📝 작성한 내용" 섹션이 미표시되던 근본 버그 수정. 수정: DELETE+INSERT → UPSERT 패턴 전환 — ① 기존 필드 UPDATE(ID 보존), ② 새 필드만 INSERT, ③ 삭제된 필드 중 submission_data 참조 있는 필드는 보존(데이터 무결성). PHP 폼 빌더 렌더에 data-field-id 속성 추가, JS addFieldCard()와 collectFields()에 id 수집 추가. 플러그인 v1.1.6→v1.1.7 (JS 캐시 버스팅)
MC 서버 내 신청 확인 — 필드 설명/입력 힌트 표시 — 신청서 확인 페이지(/mc-server/?my=ID)의 "📝 작성한 내용" 섹션에서 각 필드의 설명(description)과 💡 입력 힌트(placeholder)가 표시되도록 개선. 기존에는 질문 라벨과 입력 값만 출력되어 맥락 파악이 어려웠음. SQL JOIN 쿼리에 f.description, f.placeholder 컬럼 추가, 라벨 아래에 설명(#777 회색 텍스트) + 힌트(#666 이탤릭, 💡 아이콘) 조건부 렌더링 추가. 설명/힌트가 비어있는 필드는 해당 영역 미표시
MC 서버 신청 — 치지직(Chzzk) 채널 정보 연동 — 마이페이지에 등록한 치지직 채널명·채널 URL이 MC 서버 신청 폼에 자동 입력되는 기능 추가. ① 마이페이지 설정 탭 (/mypage/?tab=settings): 🟢 치지직 채널명, 🟢 치지직 채널 URL 입력 필드 추가 (마인크래프트 ID ↔ 자기소개 사이 배치). chzzk_channel_name, chzzk_channel_url user_meta 저장. ② MC 관리 폼 빌더 (wp-admin > MC 관리 > 신청서 작성): field_type ENUM에 chzzk_channel_name, chzzk_channel_url 2개 타입 추가. 관리자가 신청서에 치지직 정보 필드를 자유롭게 배치 가능. ③ 프론트엔드 신청 폼 (/mc-server/?form=ID): 마이페이지에 등록된 치지직 정보가 자동 입력되며, 마인크래프트 ID와 동일한 "마이페이지에서 자동 입력됨" UX 패턴 적용. 치지직 채널명은 text 타입, 채널 URL은 url 타입(기본 placeholder: https://chzzk.naver.com/채널ID). ④ DB 마이그레이션: gbmcm_maybe_upgrade_db() 함수로 기존 wp_gbmcm_form_fields.field_type ENUM 자동 확장 (ALTER TABLE). admin_init 훅에서 버전 비교 후 1회만 실행. 플러그인 v1.1.5→v1.1.6
MC 서버 신청 폼 — OG/SNS 임베디드 카드 HTML 태그 노출 수정 — 디스코드, 카카오톡, 트위터, 페이스북 등 SNS에서 /mc-server/?form=3 페이지를 공유할 때 임베디드 카드의 설명(description)에 , , 등 HTML 태그가 원문 그대로 노출되던 문제 수정. 근본 원인: gbmcm_build_seo_data() 함수에서 $form->description(TinyMCE 리치 텍스트 HTML)을 og:description, twitter:description, meta description 값에 HTML 태그 제거 없이 그대로 사용. 수정: wp_strip_all_tags(html_entity_decode()) + 연속 공백 정리(preg_replace('/\s+/', ' ')) + 160자 제한(mb_substr(, 0, 157).'…') 적용. description 비어있을 시 기본 문구 fallback 유지. 플러그인 v1.1.4→v1.1.5 (캐시 버스팅)
MC 서버 신청 — 취소/거절 시 신청 인원 카운트 제외 — 유저가 본인 취소(user_self_cancel)하거나 관리자가 신청을 취소/거절해도 신청 인원 카운트(👥 N/M명)에 여전히 포함되던 문제 수정. 근본 원인: 5곳의 SELECT COUNT(*) 쿼리가 WHERE form_id = %d로만 필터하여 cancelled, rejected 상태의 신청까지 전부 카운트. 영향: ① 최대 신청 수(max_submissions) 체크 시 취소된 건까지 포함되어 실제 유효 신청보다 더 빨리 마감 판정 ② 프론트엔드/관리자 양쪽에서 정원 표시 부정확 ③ 중복 신청 체크 시 이미 취소한 유저가 재신청 불가. 수정 5곳: ① 최대 신청 수 체크(제출 시) — AND status IN ('pending','approved') 조건 추가 ② 중복 신청 체크(제출 시) — 동일 조건 추가(cancelled 유저 재신청 허용) ③ 관리자 신청서 목록 총 신청수(submission_count) — 유효 신청만 카운트 ④ 프론트 폼 페이지 👥 N/M명 — 유효 신청만 카운트 ⑤ 프론트 목록 페이지 👥 N명 신청 — 유효 신청만 카운트. 관리자 목록의 ✅ 승인, ⏳ 대기, 🚫 취소 개별 카운트는 이미 상태별 필터를 사용하므로 변경 불필요. 플러그인 v1.1.3→v1.1.4 (캐시 버스팅)