[WORDPRESS로 환자 DATABASE 만들기] #5. 구조 간소화, 세부 작업들

2019.02.09: 이 포스팅은 WP 4를 기준으로 만들어졌던 것으로 WP 5에서는 테스트되지 않았습니다.

 

중대한 문제 – 구조 간소화

작업을 진행하다보니 다음과 같은 문제가 생긴다.

바로 content-xxx.php와 archives-xxx.php 등을 너무 막 써버렸다.

무슨말인고 하니, 저 요소들은 재활용이 가능한데, 예를 들자면

ddd

이런식으로, 각각의 파일은 각각의 역할에 맞춰 써야하나, 나는 content-xxx.php파일을 전체 자료 리스트 출력을 위해 썼다던지 하는 문제가 생겨버렸다.

이러면 나중에 파일이 쓸데없이 많아지는 문제가 발생하는 것이다.

블로그를 게시판처럼 쓰게 되면서 발생해버린 문제인데, 나름 해결책은 여러개가 있을 것 같다.

일단 나는 이렇게 해결하기로 했다.

(1) Archive-xxx에서 list를 출력하는 부분을 다음과 같은 규칙으로 사용.

get_template_part( ‘template-parts/list’, $post->post_type );

content를 list로 바꾸고, 실제로 template-parts 폴더의 이전에 만든 content-patients.php를 list-patients.php로 바꾸었다.

즉 archive-patients.php와 list-patients.php 가 한쌍

(2) 그러면 medicaldata도 역시, archive파일에 위의 php코드를 변경,

그러면 archive-medicaldata.php, list-medicaldata.php가 한쌍

(3) 검색파일(search.php)에서는 고민을 해볼수 있다. 어차피 주민등록번호로 검색하면 단 하나의 자료가 나오는데, 이것도 리스트처럼 보였다가 쓰려면 list-…를 쓰면되고, 바로 그 하나를 들어가볼꺼라면 content…를 써면 되는 것이다.

아까 만들었던, content-search_citizen은 제거, search.php에서 template를 list-patients로 바꾸면 잘 된다.

결국 search.php 와 list-patients.php 도 한쌍

간략해졌다. 이제 환자 번호에 링크를 부여하고 그 링크를 눌렀을 때 나오는 페이지에서 그 환자에 해당하는 자료만 다시 list-medicaldata.php로 넘겨주는 식으로 하면, 아주 간소해지게 된다.

환자 ID 클릭을 통한 자료 나열

Custom UI를 통해 인식되는 single-patient.php 파일을 single.php를 통해 복사한다. 그리고

get_template_part( ‘template-parts/content’, ‘patient’ );

를 유지시킨다. (환자 한명을 보겠다는 이야기)

list-patients가 만들어졌으니, content-patients는 다시 구성되어야 한다. 아예 삭제하고 content-single.php를 복사해서 만드는게 낫다.

이번에는 그 환자의 medical data만 불러오면 되니, 기존 content-single에 있는 다음 내용들을 삭제한다.

the_title( ); , the_content();

그리고 다음 코드를 넣고

$pts_id = get_post_meta($post->ID, 'pts_id')[0];

	$args = array(
		'post_type'  => 'medicaldata',				
		'meta_query' => array(
			array(
				'key'     => 'pts_rec_id',
				'value'   => $pts_id,						
			),
		),
	);
	$query = new WP_Query( $args );

사실 앞에 포스팅한 medicaldata 찾기와 동일하다.

그리고 적절한 위치에 아래 코드들을 삽입하면

<header class="entry-header">
		<?php echo "ID : ".$pts_id; ?>(<?=$query->found_posts?>)
	</header><!-- .entry-header -->
	<table>			
		<?php
		// Start the Loop.
		while ( $query->have_posts() ) : $query->the_post();		
			get_template_part( 'template-parts/list', 'medicaldata');
		// End the loop.
		endwhile;
$query->reset_postdata();
		?>				
	</table>

Untitled-13

출력이 잘 된다.

파일이 불려지는 흐름

archive-patients.php / Search.php –> list-patients.php

: 전체 혹은 검색된 환자 list 출력 (list를 클릭하면 sinlge-patients.php 를 호출)

archive-medicaldata.php –> list-medicaldata.php

: 전체 자료 list 출력

single-patients.php –> list-medicaldata.php

: 그 환자에 해당하는 자료 list 출력 (list를 클릭하면 single-medicaldata.php 를 호출)

이런 흐름인 것이다.


다음 포스팅에서는 & References

#1. pts_id 와 pts_rec_id가 동일한 data만 추출하는 것. 그래야 그 환자의 자료만 볼 수 있을테니까.

#2. 레코드 삭제버튼

#3. 환자 데이터를 삭제할때 하위 레코들도 함께 삭제하기(귀찮을 것 같다)

#4. 환자등록시 주민등록번호를 받아서 암호화 시켜 저장하고, 주민등록번호로 환자 record를 찾을 수 있게 하기.

#5. 환자ID를 통한 환자 데이터 세부조회, 날짜별 정렬, 글쓴이 표시 등등

#6. DB를 엑셀(xml)로 export하기

PHPExcel 이라는 라이브러리를 이용한다 (https://phpexcel.codeplex.com/)

 

 

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.