안녕하세요. 게시판 수정중에 문의가 있어 질문의 드립니다.
첫번째 질문은 게시판에 글을 등록할때 A의 옵션값을 2개라고 선택하고 저장하면, A와 B에 각 2개씩 저장되어 보여지는게 가능할까요?
그리고 그 값을 수정으로 들어갔을때 A와 B의 개수가 2개인것을 각각 수정하게 하고 싶습니다. 둘다 select (option) 값으로 되어있습니다.
두번째 질문은 게시글을 예약하여 해당 시간에 게시되도록 할 수 있을까요?
날짜와 시간을 정해놓으면 그전까지는 노출되지 않다가 정해진 시간이 되면 글이 노출되도록 하는 것이죠. 가능한지 문의 드립니다.
감사합니다.
1. 최초 게시글을 작성할 때와 수정할 때 보이는 필드를
다르게 표시하고 싶으신 건지요?
이미지를 첨부해서 설명이 가능하시다면 imgur에 업로드하신 뒤 링크 걸어주시겠어요?
2. 게시글 작성 시 특정 날짜를 입력하고 해당 날짜가 되기 전까지 표시되지 않게 하시려면
KBoard 플러그인 입력 필드와 kboard_list_where 필터를 활용하시면 가능할 듯합니다.
필드 메타키(옵션키)가 date인 필드를 추가해보세요.
입력 필드를 지원하는 스킨을 사용 중이시라면
워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 입력설정 탭에서 설정하실 수 있습니다.
입력 필드를 지원하지 않는 스킨을 사용 중이시라면
아래의 링크를 참고하셔서 필드를 추가해보세요.
워드프레스 게시판 KBoard(케이보드) 새로운 입력 필드 추가 방법 (커스터마이징)
새로운 필드를 추가하셨다면
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보세요.
add_action('kboard_document_insert', 'my_kboard_document_insert', 10, 4);
add_action('kboard_document_update', 'my_kboard_document_insert', 10, 4);
function my_kboard_document_insert($content_uid, $board_id, $content, $board){
if($board_id == '1'){ // 실제 게시판 id로 적용해주세요.
$content->date = $content->option->date;
$content->updateContent();
}
}
add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
function my_kboard_list_where($where, $board_id, $content_list){
if($board_id == '1'){ // 실제 게시판 id로 적용해주세요.
$date = date('YmdHis', current_time('timestamp'));
$where .= " AND `date` <= '{$date}'";
}
return $where;
}
위의 코드에서 $board_id == '1' 부분은 모두 실제 게시판 id로 적용해주세요.
게시글 등록 시 입력 필드에는 20190902 또는 20190902090000 이런 식으로 입력해보시겠어요?
연월일시분초 순입니다.
고맙습니다.
입력 필드에 날짜를 입력했을 때만 작성일을 수정하고
입력하지 않았을 때는 현재의 날짜로 저장하시려면
이전 댓글에 안내해드린 코드 중
아래의 코드를 찾아서
$content->date = $content->option->date;
$content->updateContent();
아래의 코드로 교체해서 확인해보시겠어요?
if($content->option->date){
$content->date = $content->option->date;
$content->updateContent();
}
게시글 등록 시 period 입력 필드에 값이 있을 경우 period2 필드에도 값을 저장하게 하고 싶으신 건지요?
위에 안내해드린 코드 밑에 아래의 코드도 추가해서 확인해보시겠어요?
if($content->option->period){
$content->option->period2 = $content->option->period;
}
고맙습니다.
안녕하세요.
KBoard 플러그인 게시글 수정 시에는
안내해드린 코드가 적용되지 않게 하시려면
이전 댓글에 안내해드린 코드 중
아래의 코드를 지우신 후에 다시 확인해보시겠어요?
add_action('kboard_document_update', 'my_kboard_document_insert', 10, 4);
고맙습니다.
안녕하세요~^^
1. 질문이 이해가 잘 가지 않습니다.
KBoard 플러그인에서 입력 필드 설정으로 필드를 추가할 경우
체크박스 필드는 동일한 메타키로 저장해서 활용하실 수 있습니다.
어떤 이유로 셀렉트 박스를 활용하시려는지 알려주시겠어요?
2. KBoard 플러그인에서 현재 게시글 예약 등록 기능을 제공하고 있지 않지만
특정 시간 간격으로 코드를 실행하시려면
워드프레스 크론(Wordpress Cron)을 이용하시면 될 듯합니다.
직접 프로그래밍이 가능하시다면
아래의 링크의 코드를 참고하셔서 활용해보시겠어요?
https://www.cosmosfarm.com/threads/document/19739
고맙습니다.
아, 1번의 질문은 아래와 같습니다.
예를 들어 처음에 사용자가 입력할때 값은
영어 교육이고 3주간 1인실을 예약한다는건데요, 수정할때 화면에서는 영어 교육이 3주이고 1인실을 3주를 수정하고 보여지는 부분입니다.
상세화면은 구성하면 되는데, 처음에 입력하는 영어 교육과 스터디룸에서 선택되는 기간을 한개의 select으로 두고 저장된 다음에 수정할때는 각각 수정할 수 있도록 변경하는 것을 이야기 드렸습니다.
샘플 코드는 아래와 같습니다.
<li>
<label class="attr-name" for="kboard_option_program">프로그램</label>
<div class="attr-value">
<select id="kboard_option_program" name="kboard_option_program">
<option value="영어교육"<?php if($content->option->program == '영어교육'):?> selected<?php endif?>>영어교육</option>
<option value="수학교육"<?php if($content->option->program == '수학교육'):?> selected<?php endif?>>수학교육</option>
<option value="과학교육"<?php if($content->option->program == '과학교육'):?> selected<?php endif?>>과학교육</option>
</select>
</div>
</li>
<li>
<label class="attr-name" for="kboard_option_dormitory">스터디룸</label>
<div class="attr-value">
<label><input type="radio" name="kboard_option_dormitory" value="1인실"<?php if($content->option->dormitory == '1인실'):?> checked<?php endif?>>1인실</label>
<label><input type="radio" name="kboard_option_dormitory" value="2인실"<?php if($content->option->dormitory == '2인실'):?> checked<?php endif?>>2인실</label>
<label><input type="radio" name="kboard_option_dormitory" value="3인실"<?php if($content->option->dormitory == '3인실'):?> checked<?php endif?>>3인실</label>
</div>
</li>
<li>
<label class="attr-name" for="kboard_option_period">교육기간</label>
<div class="attr-value">
<select id="kboard_option_period" name="kboard_option_period">
<option value="1"<?php if($content->option->period == '1'):?> selected<?php endif?>>4</option>
<option value="2"<?php if($content->option->period == '2'):?> selected<?php endif?>>8</option>
<option value="3"<?php if($content->option->period == '3'):?> selected<?php endif?>>8</option>
</select> 주
</div>
</li>
흠, 그리고 혹 2번째의 경우 Cron 스케줄 부분인데요, 해당 부분은 ^^; 제가 사용하기 어려울듯 한데요.
혹 가능하다면, 미리 미래의 시간을 저장해두면 사용자 화면에서 현재 시간 기준으로 미래시간이 아닌 경우의 글만 나오도록 대체가 가능할까요?
그러면 예약기능 형태의 글로 보여질수 있을것 같아 문의 드립니다.
빠른 답변 감사드립니다.
감사합니다 ^^ ~ 잘 예약되네요. 흠... 그런데 입력하지 않으면 ㅜ.ㅜ 1970년대로 찍히는데요, 혹시 활성화를 했다거나 입력했을때만 적용하도록 할 수 있을까요? 입력을 하지 않으면 날짜가 1970년으로 찍혀서요.
아, 그리고 위에 2가지 조건이라는게 이런거 인데요.
<option value="4"<?php if($content->option->period == '4'):?> selected<?php endif?>>4</option>
<option value="8"<?php if($content->option->period == '8'):?> selected<?php endif?>>8</option>
위에 period 메타값과 period2의 동일한 메타값이 선택되면 저장할때 period와 period2의 데이터가 같이 저장되도록 하고 싶어서 문의 드렸었습니다.
혹시 불가능 할까요?
설명드리면 기간이라는 옵션을 선택하면 메타1과 메타2의 동일한 값이 같이 저장되도록하는 것을 말하는 겁니다.
~ 빠른 답변 감사합니다!!!
^^ 빠른 답변 감사드립니다 ~ ㅜ.ㅜ 너무너무 잘 동작합니다. ~ 감사합니다!!! 정말요!!!
^^;; 주신 내용으로 적용하니 잘 적용되긴 하는데 ㅜ.ㅜ 문제는 처음 등록하고 수정페이지에서 period 와 period2의 값을 각각 따로 저장하려고 하니 앞에 넣은 코드때문에 period 값으로 동일하게 다시 적용되어버리네요.
혹 처음 등록할때 값만 적용하고 이후에 수정하는 값에 대해서 각각 적용되도록 수정이 가능할까요?
write / edit의 성격이 아니다보니 ... 문제가 발생하는듯 합니다. 번거롭겠지만 다시 한번 의견 부탁드립니다.