2026, 새로운 도약을 시작합니다.

회원필드 type 수정하기

1. 우리가 회원멤버 필드 mb_1 부터 mb_10 까지의 input type 을 보면 text 로 지정되어 있는 것을 알 수 있습니다.

그런데 가령 5번 필드를 라디오버튼으로 바꾸려고 adm/member_form.php 수정을 시도하려고 코드를 보면...

엥 이게 웬걸? 루프를 10번 돌리는 for 문으로 작성되어 있는 걸 알 수 있습니다. 

그래서 그걸 쉽게 수정하는 방법입니다.

예제로 저는 mb_4 의 type 을 hidden 으로 mb_7 를 input 가 아니라 textarea 로 바꿔 보겠습니다.

3717943588_1692675073.7865.jpg

----------

2. 문서 가장 하단에 아래의 코드를 찾습니다.

<?php
run_event('admin_member_form_after', $mb, $w);

바로 그 위에 아래의 코드를 넣어보세요. 자바스크립트로 원하는 input 의 outerHTML 을 바꿔줍니다.

[code]

<script>
document.querySelector("#mb_4").outerHTML = "<input type='hidden' name='mb_4' id='mb_4' value='<?php echo $mb['mb_4']; ?>'>";
document.querySelector("#mb_7").outerHTML = "<textarea name='mb_7' id='mb_7'><?php echo $mb['mb_7']; ?></textarea>";
</script>

[/code]

----------

3. 위와 같은 식으로 라디오버튼 등도 넣어주시면 되구요.

참고로 outerHTML 은 제이쿼리에는 없습니다. 어거지로 만들 수야 있겠지요. parent 로 치고 올라가 거기서 자식에 해당하는 본인의 html() 를 바꿔주면 되긴 합니다.

단 outerHTML 의 경우 상위 엘레먼트가 body 일 때에는 사용하지 못하며 해당 엘레먼트의 바뀌기전 innerHTML 중 일부를 잠재적으로 가지고 있기 때문에 사용할 때 주의해야 하는데... 이 게시글에서 사용한 코드는 양쪽 모두에 해당하지 않습니다.

----------

4. 하지만 코어를 수정하자니 찝찝한 느낌이 듭니다. 다행히도 이 문서 하단에는 후킹코드가 하나 걸려 있습니다.

run_event('admin_member_form_after', $mb, $w);

그래서 아래의 hook 을 extend 디렉토리의 문서(에컨대 user.config.php) 또는 다른 문서를 만들어서 입력합니다.

주의할 점은 user.config.php 파일은 최신버전부터는 포함되지 않고 배포되고 있으니 참고하세요.

[code]

<?php
function admin_member_form_after_hook() {
    global $mb;
    echo "
        <script>
        document.querySelector('#mb_4').outerHTML = '<input type=\'hidden\' name=\'mb_4\' id=\'mb_4\' value=\'".$mb['mb_4']."\'>';
        document.querySelector('#mb_7').outerHTML = '<textarea name=\'mb_7\' id=\'mb_7\'>".$mb['mb_7']."</textarea>';
        </script>
    ";
}
add_event('admin_member_form_after', 'admin_member_form_after_hook');
?>

[/code]

----------

5. 그런데 run_event 의 파라미터를 보니 첫번째로 $mb 를 포함하고 있어서 굳이 global 로 선연해 줄 필요는 없을 것 같네요.

[code]

<?php
function admin_member_form_after_hook($mb) {
    echo "
        <script>
        document.querySelector('#mb_4').outerHTML = '<input type=\'hidden\' name=\'mb_4\' id=\'mb_4\' value=\'".$mb['mb_4']."\'>';
        document.querySelector('#mb_7').outerHTML = '<textarea name=\'mb_7\' id=\'mb_7\'>".$mb['mb_7']."</textarea>';
        </script>
    ";
}
add_event('admin_member_form_after', 'admin_member_form_after_hook', 1, 1);
?>

[/code]

----------

6. 만일 $mb 가 5개의 파라미터 중 3번째라고 한다면 아래와 같은 식으로 하면 되겠죠.

3개까지만 적어주면 되겠습니다.

function admin_member_form_after_hook($one, $two, $mb)

..

add_event('admin_member_form_after', 'admin_member_form_after_hook', 3, 3);

|

댓글 6개

좋은 팁 감사드립니다. 저처럼 초보에겐 큰 도움이 됩니다 ^^ 추천꾹!
@marty72 늘 감사합니다.
잘 활용 하겠습니다. 감사 합니다.
@들레아빠 감사합니다. 들레아빠님

늘 감사드립니다.

@크리스휘 감사합니다

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

그누보드5 팁자료실

번호 제목 글쓴이 날짜 조회
공지 3년 전 조회 4,598
2741 3일 전 조회 112
2740 4일 전 조회 104
2739 1주 전 조회 209
2738 1주 전 조회 217
2737 1주 전 조회 181
2736 1주 전 조회 280
2735 3주 전 조회 281
2734 3주 전 조회 263
2733 1개월 전 조회 265
2732 1개월 전 조회 301
2731 1개월 전 조회 267
2730 1개월 전 조회 226
2729 1개월 전 조회 356
2728 1개월 전 조회 245
2727 1개월 전 조회 422
2726 1개월 전 조회 256
2725 1개월 전 조회 330
2724 1개월 전 조회 358
2723 1개월 전 조회 267
2722 1개월 전 조회 300
2721 1개월 전 조회 211
2720 2개월 전 조회 304
2719 2개월 전 조회 307
2718 2개월 전 조회 202
2717 2개월 전 조회 336
2716 2개월 전 조회 202
2715 2개월 전 조회 312
2714 2개월 전 조회 273
2713 2개월 전 조회 376
2712 2개월 전 조회 289
🐛 버그신고