Blog >> Development >> tv.dhgb.co.kr.

수료증 생성 150 150 phobe

수료증 생성

  1. ‘wp_quizmaker_results’ 테이블에 기록되고,
  2. 수료데이터가 참조하는 레코드는 ‘wp_posts’ 수료증 구분 레코드 하나, 수료증배경을 기록한 첨부 레코드하나.
  3. ‘wp_posts’ 수료증 구분 레코드 하나는 ‘wp_postmeta’ 테이블에서 연관 레코드 4개를 가진다.
계층대상 테이블레코드 역할 및 핵심 필드
1. 수료 이력 데이터wp_quizmaker_results수강생의 수료 결과(id), 수강구분 번호(test_id: 1~8), 수료증 고유번호(cert_id)
2. 수료증 CPTwp_postspost_type = 'certificate' (예: 5번, 9번 등 수료증 템플릿 메인 레코드)
3. 배경 첨부파일wp_postspost_type = 'attachment' (예: 13번, 203번 등 PNG 이미지 메타 레코드)
4. 수료증 메타 설정wp_postmeta수료증 CPT ID에 1:1로 귀속되는 4개 핵심 설정값

수료증 CPT(post_type = ‘certificate’)에 귀속되는 wp_postmeta 4종

  • _certificate_data: 이름, 수료일자, 발급번호 등 텍스트의 x, y 좌표 및 폰트 크기/색상 설정 배열
  • _certificate_background: 위 3번 배경 첨부파일 레코드의 고유 ID (attachment 포스트 ID)
  • certid: 해당 수료증 템플릿의 고유 난수 해시값 (예: 6A3F66E223)
  • _edit_last: 최종 수정한 관리자 사용자 ID
]$ mysql wp_tvdhgb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 552561
Server version: 10.11.15-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

phobe[wp_tvdhgb]>SELECT ID, post_title, post_name, post_type  FROM wp_posts WHERE ID = '9';
+----+-----------------------------------+-----------+-------------+
| ID | post_title                        | post_name | post_type   |
+----+-----------------------------------+-----------+-------------+
|  9 | 신규(집체)참여자 수료증           | cert-r4   | certificate |
+----+-----------------------------------+-----------+-------------+
1 row in set (0.000 sec)

phobe[wp_tvdhgb]>SELECT ID, post_title, post_name, post_type  FROM wp_posts WHERE ID = '203';
+-----+------------+-----------+------------+
| ID  | post_title | post_name | post_type  |
+-----+------------+-----------+------------+
| 203 | rt4        | rt4       | attachment |
+-----+------------+-----------+------------+
1 row in set (0.000 sec)

phobe[wp_tvdhgb]>SELECT meta_id, post_id, meta_key FROM wp_postmeta WHERE post_id = 9;
+---------+---------+-------------------------+
| meta_id | post_id | meta_key                |
+---------+---------+-------------------------+
|     761 |       9 | _edit_last              |
|     762 |       9 | _certificate_background |
|     763 |       9 | _certificate_data       |
|     764 |       9 | certid                  |
+---------+---------+-------------------------+
4 rows in set (0.000 sec)

phobe[wp_tvdhgb]>SELECT id, user_name, test_id, cert_id, user_birth, agency, class_id  FROM wp_quizmaker_results WHERE id = 23;
+----+-----------+---------+------------+------------+-----------------------------+----------+
| id | user_name | test_id | cert_id    | user_birth | agency                      | class_id |
+----+-----------+---------+------------+------------+-----------------------------+----------+
| 23 | 강****    |       2 | 6A3F66E223 |   19651101 | 경남*************관          |       54 |
+----+-----------+---------+------------+------------+-----------------------------+----------+
1 row in set (0.000 sec)

phobe[wp_tvdhgb]>SELECT id, user_id, user_name, user_birth, company_name, pdivi, pdivi_no, agency, agency_no FROM wp_ctime WHERE id = 54;
+----+---------+-----------+------------+--------------+-------------------------------+----------+-----------------------------+-----------+
| id | user_id | user_name | user_birth | company_name | pdivi                         | pdivi_no | agency                      | agency_no |
+----+---------+-----------+------------+--------------+-------------------------------+----------+-----------------------------+-----------+
| 54 |     104 | 강****    |   ********* |              | 신규참여자(집체혼합)          |        2 | 경남**************관          |        26 |
+----+---------+-----------+------------+--------------+-------------------------------+----------+-----------------------------+-----------+
1 row in set (0.000 sec)

test_id -> ‘wp_ctime’ 테이블의 ‘pdivi_no’
agency -> ‘wp_ctime’ 테이블의 ‘agency’

전체 참조 및 렌더링 체인

  • 다운로드 트리거: 사용자가 ?view-certificate=23 요청 전송
  • 구분 코드 확인: wp_quizmaker_results의 23번 레코드 조회 -> test_id = 2 확인
  • 수료증 매핑: cert-map.php의 get_pdivi_meta(2)가 수료증 포스트 ID = 9를 지정
  • 배경 및 레이아웃 취득:
    • 9번 포스트의 wp_postmeta에서 _certificate_background 조회 -> 203번(rt4.png) 파일 경로 획득
    • _certificate_data를 읽어 텍스트 출력 좌표 획득
  • 합성 및 출력: 이미지 위에 23번 수강생 정보(강영미, cert_id)를 얹어 최종 수료증 파일 다운로드 완료