안녕하세요
https://www.cosmosfarm.com/threads/document/37494
이 질문을 올렸던 ask-one 사용자입니다.
질문을 올린지 시간이 많이 지나 새 글을 작성하고, 답변 달리면 바로 해당 스레드를 지우겠습니다.
먼저 저희 사이트는 간단하게 설명하자면, 상담사와 이용자를 매칭시키는 일을 주로 하려고 하는데요.
우선 이용자가 질문 글을 올리면, 상담사 중 한 분이 답변을 달고, 답변에서 더 상담하고 싶은 부분이 있으면, 1:1 유료 상담을 신청하는 방식입니다.
https://yamco.kr
저희 사이트 url입니다.
따라서 qna부분에서 답변이 달리면 기존에는
제목/글쓴이/날짜
정도만 나와 있다면
새롭게 생각한 화면은
아래와 같이 프로필 사진과 함께 여러 정보들을 제시해 주고, 상담사에게 바로 상담할 수 있는 링크(상품 페이지 - 우커머스)도 같이 넣고 싶습니다.
https://imgur.com/FjgGXIu
제 생각에는 저런 문구를 하나하나 넣으려면 안될 것 같아서
상담사 유저 프로필에 필드를 추가해서 게시글 마다 표시하게 하면 좋을 것 같다는 생각입니다.
그래서 일단 프로필 사진과 함께, 답변자의 다른 필드들을 게시글 안에 넣을 수 있는지 여쭤봅니다.
정리를 해드리자면,
1. 답변자에 대한 설명을 더 넣을 수 있는 방법
2. 유저 프로필에 필드들을 활용해서 넣는 방법
3. 프로필 사진 넣는 방법.
4. 혹시 링크도 넣을 수 있는지(답변자마다 링크 주소가 다르게 설정)
-기존 화면
https://imgur.com/K8o54zt
- (계획)신규 화면
https://imgur.com/FjgGXIu
감사합니다.
안녕하세요~^^
KBoard 플러그인 내장 필터인 kboard_content 필터를 활용하시면
게시글 본문 내용을 편집할 수 있으며 상단 또는 하단에 추가 정보를 표시할 수 있습니다.
답글일 때만 본문 하단에 추가 정보를 표시하시려면
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보세요.
add_filter('kboard_content', 'my_kboard_content', 10, 3);
function my_kboard_content($content, $content_uid, $board_id){
if($board_id == '1'){ // 실제 게시판 id로 적용해주세요.
$document = new KBContent();
$document->initWithUID($content_uid);
$parent_uid = $document->parent_uid;
if($parent_uid){
$parent_document = new KBContent();
$parent_document->initWithUID($parent_uid);
$content .= '답글 본문에만 표시됩니다.';
}
}
return $content;
}
위의 코드에서 $board_id == '1' 부분은 실제 게시판 id로 적용해보세요.
위의 코드를 실제로 적용하시면 답글 본문 하단에 문구가 표시됩니다.
워드프레스 사용자 정보를 표시하시려면
get_user_meta 함수를 활용해보시겠어요?
get_user_meta 함수에 대한 자세한 내용은
아래의 링크를 참고해보세요.
https://codex.wordpress.org/ko:함수_레퍼런스/get_user_meta
고맙습니다.
답변 감사합니다.
그런데 저는 현재 '질문글'과 '답변글'을 아래 스크린샷 처럼 한 화면에 표시를 하고 있는데요.
https://imgur.com/K8o54zt
스레드봇님께서 가르쳐주신 방법대로 하면 해당 화면에는 나오지 않고,
원래 document, 즉 '답글'만 보였던 화면에서만 보이게 됩니다..
혹시 저 같이 질문글과 답글이 한 화면에 보이는 경우에는 해결이 불가능할까요?
참고가 되실 것 같아 아래와 같이 스크린샷 첨부합니다.
답변글만 있는 경우(해당 솔루션이 표시됨)
https://imgur.com/yEqose3
답변글과 질문글이 같이 있는 경우 - 질문자의 사이트에 적용되는 화면이지만, 솔루션이 표시되지 않음
https://imgur.com/mU7gE1K
감사합니다.
안녕하세요.
KBoard 플러그인 게시글 본문 페이지를 수정하신 건지요?
참고하신 링크 또는 수정하신 코드를 알려주시면
도움 드릴 방법을 찾아보겠습니다.
고맙습니다.
답변 감사합니다. 현재 참고한 스레드는
https://www.cosmosfarm.com/threads/document/16473
여기 이며, document.php 파일 코드를 첨부하겠습니다.
참고로 <!--답변 시작-->
이런 식으로 주석을 달아서 답변이 시작되는 부분을 페이지에서 찾기 기능으로 찾으시면 편하실거에요.
신경 써주셔서 감사합니다
<div id="kboard-document">
<div id="kboard-ask-one-document">
<div class="kboard-document-wrap" itemscope itemtype="http://schema.org/Article">
<meta itemprop="name" content="<?php echo kboard_htmlclear(strip_tags($content->title))?>">
<!--제목 영역 -->
<div class="kboard-detail">
<div class="detail-attr detail-title">
<div class="detail-name"><?php echo __('Title', 'kboard')?></div>
<div class="detail-value"><?php echo $content->title?></div>
</div>
<?php if($content->category1):?>
<div class="detail-attr detail-category1">
<div class="detail-name"><?php echo $content->category1?></div>
</div>
<?php endif?>
<div class="detail-attr detail-writer">
<div class="detail-name"><?php echo __('Author', 'kboard')?></div>
<div class="detail-value"><?php echo apply_filters('kboard_user_display', $content->getUserName(), $content->getUserID(), $content->getUserName(), 'kboard', $boardBuilder)?></div>
</div>
<div class="detail-attr detail-date">
<div class="detail-name"><?php echo __('Date', 'kboard')?></div>
<div class="detail-value"><?php echo date('Y-m-d H:i', strtotime($content->date))?></div>
</div>
<div class="detail-attr detail-view">
<div class="detail-name"><?php echo __('Views', 'kboard')?></div>
<div class="detail-value"><?php echo $content->view?></div>
</div>
<?php
if(!$board->initCategory2()){
$board->category = kboard_ask_status();
}
?>
<!-- 여기에서 답변 상태를 바꿀 수 있겠다. -->
<?php if($board->isAdmin()):?>
<div class="detail-attr detail-category2">
<div class="detail-name">
<select id="kboard-select-category2" name="category2" onchange="kboard_ask_one_category_update('<?php echo $content->uid?>', this.value)">
<?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?>
<option value="">상태없음</option>
</select>
</div>
</div>
<?php else:?>
<div class="detail-attr detail-category2">
<div class="detail-name">
<span class="kboard-ask-one-status status-<?php echo array_search($content->category2, $board->category)?>"><?php echo $content->category2?></span>
</div>
</div>
<?php endif?>
</div>
<!-- 내용 영역 -->
<div class="kboard-content" itemprop="description">
<div class="content-view">
<?php echo $content->getDocumentOptionsHTML()?>
<?php echo $content->content?>
</div>
<!-- 답변 -->
<?php
$reply_list = new KBContentList();
$reply_list->getReplyList($content->uid);
while($reply = $reply_list->hasNextReply()):?>
<!--제목 영역 -->
<div class="kboard-detail" >
<div class="detail-attr">
<div class="detail-name"><?php echo __('Title', 'kboard')?></div>
<div class="detail-value"><?php echo $reply->title?></div>
</div>
<div class="detail-attr detail-writer">
<div class="detail-name"><?php echo __('Author', 'kboard')?></div>
<div class="detail-value"><?php echo apply_filters('kboard_user_display', $reply->getUserName(), $reply->getUserID(), $reply->getUserName(), 'kboard', $boardBuilder)?></div>
</div>
<div class="detail-attr detail-date">
<div class="detail-name"><?php echo __('Date', 'kboard')?></div>
<div class="detail-value"><?php echo date('Y-m-d H:i', strtotime($reply->date))?></div>
</div>
<div class="detail-attr">
<a href="<?php echo $url->getContentEditor($reply->uid)?>" class="kboard-ask-one-button-gray">답글 수정</a>
</div>
</div>
<!-- 내용 영역 -->
<div class="content-view">
<p><?php echo nl2br($reply->content)?></p>
</div>
<?php endwhile?>
<!-- 답변 끝 -->
</div>
<!-- <div class="kboard-document-action">
<div class="left">
<button type="button" class="kboard-button-action kboard-button-like" onclick="kboard_document_like(this)" data-uid="<?php echo $content->uid?>" title="<?php echo __('Like', 'kboard')?>"><?php echo __('Like', 'kboard')?> <span class="kboard-document-like-count"><?php echo intval($content->like)?></span></button>
<button type="button" class="kboard-button-action kboard-button-unlike" onclick="kboard_document_unlike(this)" data-uid="<?php echo $content->uid?>" title="<?php echo __('Unlike', 'kboard')?>"><?php echo __('Unlike', 'kboard')?> <span class="kboard-document-unlike-count"><?php echo intval($content->unlike)?></span></button>
</div>
<div class="right">
<button type="button" class="kboard-button-action kboard-button-print" onclick="kboard_document_print('<?php echo $url->getDocumentPrint($content->uid)?>')" title="<?php echo __('Print', 'kboard')?>"><?php echo __('Print', 'kboard')?></button>
</div>
</div> -->
</div>
<?php if($content->isAttached()):?>
<div class="kboard-attach">
<div class="kboard-attach-title"><?php echo __('Attachment', 'kboard')?> <?php echo intval(count((array)$content->getAttachmentList()))?>개</div>
<?php foreach($content->getAttachmentList() as $key=>$attach):?>
<button type="button" class="kboard-button-action kboard-button-download" onclick="window.location.href='<?php echo $url->getDownloadURLWithAttach($content->uid, $key)?>'" title="<?php echo sprintf(__('Download %s', 'kboard'), $attach[1])?>"><?php echo $attach[1]?></button>
<?php endforeach?>
</div>
<?php endif?>
<?php if($content->visibleComments()):?>
<div class="kboard-comments-area"><?php echo $board->buildComment($content->uid)?></div>
<?php endif?>
<div class="kboard-document-navi">
<div class="kboard-prev-document">
<?php
$bottom_content_uid = $content->getPrevUID();
if($bottom_content_uid):
$bottom_content = new KBContent();
$bottom_content->initWithUID($bottom_content_uid);
?>
<a href="<?php echo $url->getDocumentURLWithUID($bottom_content_uid)?>">
<span class="navi-arrow">«</span>
<span class="navi-document-title kboard-ask-one-cut-strings"><?php echo $bottom_content->title?></span>
</a>
<?php endif?>
</div>
<div class="kboard-next-document">
<?php
$top_content_uid = $content->getNextUID();
if($top_content_uid):
$top_content = new KBContent();
$top_content->initWithUID($top_content_uid);
?>
<a href="<?php echo $url->getDocumentURLWithUID($top_content_uid)?>">
<span class="navi-document-title kboard-ask-one-cut-strings"><?php echo $top_content->title?></span>
<span class="navi-arrow">»</span>
</a>
<?php endif?>
</div>
</div>
<div class="kboard-control">
<div class="left">
<a href="<?php echo $url->set('mod', 'list')->toString()?>" class="kboard-ask-one-button-gray"><?php echo __('List', 'kboard')?></a>
<?php if($board->isReply() && !$content->notice):?><a href="<?php echo $url->set('parent_uid', $content->uid)->set('mod', 'editor')->toString()?>" class="kboard-ask-one-button-gray"><?php echo __('Reply', 'kboard')?></a><?php endif?>
</div>
<?php if($content->isEditor() || $board->permission_write=='all'):?>
<div class="right">
<a href="<?php echo $url->getContentEditor($content->uid)?>" class="kboard-ask-one-button-gray"><?php echo __('Edit', 'kboard')?></a>
<a href="<?php echo $url->getContentRemove($content->uid)?>" class="kboard-ask-one-button-gray" onclick="return confirm('<?php echo __('Are you sure you want to delete?', 'kboard')?>');"><?php echo __('Delete', 'kboard')?></a>
</div>
<?php endif?>
</div>
<?php if($board->contribution() && !$board->meta->always_view_list):?>
<div class="kboard-ask-one-poweredby">
<a href="https://www.cosmosfarm.com/products/kboard" onclick="window.open(this.href);return false;" title="<?php echo __('KBoard is the best community software available for WordPress', 'kboard')?>">Powered by KBoard</a>
</div>
<?php endif?>
</div>
</div>
<?php wp_enqueue_script('ask-one-document', "{$skin_path}/document.js", array(), KBOARD_VERSION, true)?>
안녕하세요.
게시글 본문을 표시하는 document.php 파일을 직접 수정하셨다면
해당 파일에 사용자 정보를 표시하는 코드를 추가해보시겠어요?
올려주신 코드 중 아래의 코드를 찾아서
<p><?php echo nl2br($reply->content)?></p>
찾은 코드 밑에 아래의 코드를 추가하시면 회원가입 시 입력한 이메일을 표시할 수 있습니다.
<?php $user_info = get_userdata($reply->member_uid);?>
<?php echo $user_info->user_email?>
get_userdata 함수를 활용하시면
이메일 외에도 회원정보를 표시하실 수 있습니다.
자세한 내용은 아래의 링크를 참고해보세요.
https://codex.wordpress.org/Function_Reference/get_userdata
고맙습니다.
답변 감사합니다.
알려주신대로 적용하니 잘 되었는데요. 문제는 프로필 사진(아바타)을 글에 올리고 싶은데, 안돼서 다시 질문 드립니다.
<?php $user_info = get_userdata($reply->member_uid);
$profile_url = get_avatar_url($user_info);
$display = get_avatar($user_info, 24, '', $username).' '.$username;
echo $display;
echo $profile_url;
?>
<div class="container">
<div class="profile">
<div class="profile-information">
<div class="profile-name"><?php echo $user_info->first_name?> 선생님</div>
<div class="profile-description">"<?php echo $user_info->description?>"</div>
<div class="profile-product_page"><a class="kboard-ask-one-button-gray" href="<?php echo $user_info->user_url?>">텍스트 상담</a></div>
</div>
</div>
현재 이렇게 코드를 적어논 상태이구요
$profile_url = get_avatar_url($user_info);
$display = get_avatar($user_info, 24, '', $username).' '.$username;
echo $display;
echo $profile_url;
다른 스레드 참고해서 이렇게 적용시켜 봤는데, 자꾸 기본 아바타만 나오는 상황입니다.
아바타는 '코스모스팜 회원관리' 플러그인을 통해서 회원정보(내 정보 수정)을 통해서 업로드해 놓았습니다.
안녕하세요.
KBoard 플러그인 게시글 본문 페이지에서 아바타 이미지를 표시하시려면
아래의 코드로 교체해서 확인해보시겠어요?
$display = get_avatar($reply->member_uid, 24, '', $reply->member_display).' '.$reply->member_display;
echo $display;
get_avatar 함수에 대한 자세한 내용은 아래의 링크를 참고해보세요.
https://developer.wordpress.org/reference/functions/get_avatar/
고맙습니다.