ask-one 답변자 프로필 관련

안녕하세요

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/

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기