안녕하세요. 카테고리를 사용해서 답변대기 답변완료 등을 지정하고 있는데
내용이 비어있는 게시물은 자동으로 답변 완료 카테고리를 달고 싶어서
<?php if($board->isAdmin()):?>
<div class="kboard-attr-row">
<label class="attr-name" for="kboard-select-category2">
<?php echo __( 'Status', 'kboard')?>
</label>
<div class="attr-value">
<select id="kboard-select-category2" name="category2">
<option value="">상태없음</option>
<?php while($board->hasNextCategory()):?>
<option value="<?php echo $board->currentCategory()?>" <?php if($content->category2 == $board->currentCategory()):?> selected
<?php endif?>>
<?php echo $board->currentCategory()?></option>
<?php endwhile?>
</select>
</div>
</div>
<?php elseif(empty($content->content)):?>
<input type="hidden" name="category2" value="<?php echo $content->category2?$content->category2:$board->category[1]?>">
<?php else:?>
<input type="hidden" name="category2" value="<?php echo $content->category2?$content->category2:$board->category[0]?>">
<?php endif?>
위와 같이 수정했는데 empty 가 먹히지 않는것 같습니다. length($content -> content) == 0 로도 해보았고 $content -> content == '' 으로도 해보았는데
다른 방법이 있을까요 ? 감사합니다
안녕하세요~^^
해당 코드는 어느 부분에 추가하신 건지요?
KBoard 플러그인에서 게시글 내용이 비었는지 체크하시려면
$content->content == '' 또는 !$content->content 코드로 체크해주시면 됩니다.
올려주신 코드에서 어느 부분이 실행되고 있는지요?
게시글 입력 후 새로운 코드를 추가하고 실행하게 하시려면
kboard_document_insert 액션 사용도 고려해보세요.
KBoard 플러그인 주요 액션과 필터는
아래의 링크를 참고해보세요.
https://www.cosmosfarm.com/products/kboard/hooks
고맙습니다.
editor.php 에서 수정했습니다!
add_action('kboard_document_insert', 'test',10,2);
function test($board_id, $content_uid) {
$content = new KBContent();
$content->initWithUID($content_uid);
$board = $content->getBoard();
if($content->content == '') {
$content->category2 = $board->category[1];
return $content;
}
}
이렇게 코드를 짜봤는데 잘못된게 어디일까요? ㅠㅠ
도움 주시면 감사하겠습니다 ㅜㅜ
코드를 잘못 수정하신 듯합니다.
아래의 코드를 활용해보시겠어요?
add_action('kboard_document_insert', 'kboard_document_insert_20200519', 10, 4);
add_action('kboard_document_update', 'kboard_document_insert_20200519', 10, 4);
function kboard_document_insert_20200519($content_uid, $board_id, $content, $board){
if($board_id == '1'){ // 실제 게시판 id로 적용해주세요.
if(!$content->content){
$board->initCategory2();
$data['category2'] = $board->category[1];
$content->updateContent($data);
}
}
}
위의 코드에서 $board_id == '1' 부분은 실제 게시판 id로 적용해주세요.
해당 코드를 적용하시면 게시글 등록/수정 시 게시글 본문 내용이 비어있다면
게시판 설정 페이지에서 카테고리2 입력 필드에 입력한 2번째 카테고리로 적용됩니다.
게시글 수정 시에는 적용하지 않게 하시려면
위의 코드 중 아래의 코드를 찾아서 지워보시겠어요?
add_action('kboard_document_update', 'kboard_document_insert_20200519', 10, 4);
고맙습니다.
잘 해결하였습니다! 감사합니다 :)
하나 더 질문이 있는데 제가 새 게시글이 올라오면 이메일을 받게끔 해두었는데 내용이 없다면 이메일 발송이 안되게 하고싶은데 이부분은 어디서 수정할수있을까요?
최신글 이메일 알림 기능을 말씀하시는 건지요?
해당 기능은 게시글 본문 내용에 상관없이 발송되기 때문에
본문 내용이 있을 때만 메일을 보내시려면
별도로 코드를 작성해주셔야 할 듯합니다.
메일을 보내는 건 워드프레스 내장 함수인 wp_mail 함수를 활용해보시겠어요?
최신글 이메일 알림 경우에도 wp_mail 함수를 활용해서 메일을 보내고 있습니다.
wp_mail 함수에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://developer.wordpress.org/reference/functions/wp_mail/
고맙습니다.