2019.02.09: 이 포스팅은 WP 4를 기준으로 만들어졌던 것으로 WP 5에서는 테스트되지 않았습니다.
준비작업
#0. 작업을 쉽게 하기 위해 메뉴를 만들었다.
먼저 적어보자면, Edit를 해봤더니 63이 뜬다. 알고보니 이건 pid라고 워드프레스 내부적으로 post의 id값이 넘어온건데, 두번째 포스팅에서 내가 사용한 변수인 $pid랑 겹쳤다. 그래서 포스팅 내용은 수정했다..) >> 결론은 $pid라는 변수 이름은 함부로 쓰지 말자
환자 자료의 수정 / 삭제 기능
UI 수정
Edit / Delete 추가하는 것을 시작하면
#1. 자료를 몇개 추가하고, 여기에 편집과 수정기능을 추가
content-medicaldata.php
<td><?php edit_post_link( sprintf( /* translators: %s: Name of current post */ __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ), get_the_title() ), '<span class="edit-link">', '</span>' ); ?> </td> <td> <?php $currnet_user = wp_get_current_user(); <?php if ($post->post_author == get_current_user_id()/*$current_user->ID*/) { ?><p><a onclick="return confirm('Are you SURE you want to delete this Wish?')" href="<?php echo get_delete_post_link( $post->ID ) ?>">삭제</a></p><?php } ?> </td>
그러면
음..조잡한 UI다.
아무튼 소스를 보면 $current_user->ID가 안먹는다. 이상하다. 레퍼런스에서는 사용할 수 있는 변수값인데.
이부분 나중에 관리자가 아닌 ID로 다시 테스트해봐야한다.
Custom Query 사용
이번엔 ID별로 등록된 자료를 계산해보자
content-patients.php 상단에 다음 소스를 추가.
이왕이면 지난번 포스팅에서 작성된 $pts_id = get_post_meta($post->ID, ‘pts_id’)[0]; 밑에다 두자. 그래야 $pts_id 라는 변수를 이용할 수 있으니.
$args = array( 'post_type' => 'medicaldata', 'meta_query' => array( array( 'key' => 'pts_id', 'value' => $pts_id, ), ), ); $query = new WP_Query( $args );
핵심은 meta 값으로 환자 ID를 맞추는 것이다.
그리고 HTML 코드 수정
<td><?=$pts_id?> (<?=$query->found_posts?>)</td>
완료.
다음 포스팅에서는 & References
pts_id 와 pts_rec_id가 동일한 data만 추출하는 것. 그래야 그 환자의 자료만 볼 수 있을테니까.레코드 삭제버튼환자 데이터를 삭제할때 하위 레코들도 함께 삭제하기(귀찮을 것 같다)- 환자등록시 주민등록번호를 받아서 암호화 시켜 저장하고, 주민등록번호로 환자 record를 찾을 수 있게 하기.
- 환자ID를 통한 환자 데이터 세부조회, 날짜별 정렬, 글쓴이 표시 등등.
- DB를 엑셀(xml)로 export하기
- https://paulund.co.uk/access-database-outside-wordpress
- http://wordpress.stackexchange.com/questions/26254/how-to-include-wp-load-php-from-any-location
- https://paulund.co.uk/creating-custom-tables-wordpress-plugin-activation