안녕하세요! 현재 오션 별점 스킨으로 리뷰게시판을 운영중인데요!
리뷰글을 쓸 수 있는 기준은 제품을 구매하면 리뷰글을 작성할 수 있는데요.
현재 문제점은
1번 구매한 제품에 대해 리뷰를 작성할 수 있는 횟수는 1번이여야 하는데 무제한으로 글을 작성하게 되어있으며,
제품을 구매한 이력이 없는 고객도 리뷰글을 쓸 수 있게 되어있습니다.
해결하고자 하는 방안은
1. 제품을 구매했을 때 리뷰글을 쓸 수 있으며 제품을 구매할 시 작성할 수 있는 리뷰글 갯수는 1개입니다.
EX) 크림 제품 1개 구매 -> 리뷰글 1개 / 크림 제품 1개 재구매 -> 리뷰글 1개 / 크림, 세럼 제품 1개 씩 구매 -> 제품당 리뷰글 1개
2. 제품을 구매하지 않은 고객은 리뷰글을 쓸 수 없게 하고싶습니다. (리뷰 쓰기 버튼을 보이지 않게)
상품 페이지 링크입니다.
해당 페이지내에 있는 REVIEW Tap을 누르게되면 리뷰게시판이 나오게됩니다.
방법이 있을까요?
넵 감사합니다~
이전 댓글에 안내해드린 코드는 제품을 한 번 구매하면 제품 구매 횟수에 상관없이
게시글을 한 번만 작성할 수 있는 코드입니다.
저희가 모든 코드를 커뮤니티에서 만들어드리긴 현실적으로 불가능합니다.
코드를 수정하기 어렵거나 수정해야 하는 부분이 많다면
프로젝트 의뢰에 상세한 내용을 등록해보세요.
https://www.cosmosfarm.com/project
고맙습니다.
답변 감사드립니다.
알려주신 코드는 제품 구매 횟수와 상관없이 제품당 1번만 게시글을 작성할 수 있게 하는 코드인가요?
제품을 구매할 때마다 리뷰글을 쓸 수 있으며,
구매한 제품에 대한 리뷰글은 1개만 작성할 수 있게 하고싶습니다.
ex) 02월 제품 구매 -> 구매 1회 = 리뷰글 1개
04월 제품 구매 -> 동일 제품구매 1회 = 동일 제품구매 리뷰글 1개
한 제품 당 1번의 상품평만 작성되게 하시려면
기존의 코드 대신 아래의 코드로 교체해보시겠어요?
add_action('kboard_pre_document_insert', 'kboard_pre_document_insert_20210219', 10, 4);
function kboard_pre_document_insert_20210219($content_uid, $board_id, $content, $board){
if($board_id == '1'){ // 실제 게시판 id로 적용해보세요.
$user = wp_get_current_user();
$check = wc_customer_bought_product($user->user_email, $content->member_uid, $content->category1);
if(!$check){
echo '<script>alert("상품을 구매한 사용자만 글을 작성할 수 있습니다.")</script>';
echo '<script>window.history.back()</script>';
exit;
}
$list = new KBContentList($board_id);
$list->category1 = $content->category1;
$list->member_uid = $content->member_uid;
$results = $list->getList();
if($results){
echo '<script>alert("상품평은 1회만 작성하실 수 있습니다.")</script>';
echo '<script>window.history.back()</script>';
exit;
}
}
}
고맙습니다.
인터넷 쿠키와 데이터등 삭제 후 다시 실행하니 코드가 정상적으로 동작됩니다!
한 가지더 여쭙고 싶은 부분이 있는데요!
지금 작동되는걸 확인해보니 구매 후 계속해서 리뷰를 남길 수 있게 되어있는데요~
리뷰글을 쓸 수 있는 횟수를 정할 수는 없을까요??
예를들어 제품을 1번 구매할 때 제품 당 리뷰글 1번만 작성 가능하게요!
wc_customer_bought_product 함수는 우커머스에서
구매자가 상품을 구매했는지 체크하는 함수입니다.
해당 코드를 적용하면 저희 쪽 테스트 서버에서는 정상적으로 동작하는 것을 확인했습니다.
해당 코드가 정상적으로 동작하지 않는다면
우커머스 문서 쪽에 관련 자료가 있는지도 확인해보시겠어요?
고맙습니다.
답변 감사드립니다.
알려주신 코드를 입력 후 체크해보았는데요.
제품을 구매한 고객도 상품을 구매한 사용자만 글을 작성할 수 있습니다. 라는 문구가 뜹니다.
우커머스 상품에 KBoard 연결 시
상품을 구매한 사용자만 글을 쓸 수 있게 하시려면
아래의 코드를 활용해보세요.
add_action('kboard_pre_document_insert', 'kboard_pre_document_insert_20210219', 10, 4);
function kboard_pre_document_insert_20210219($content_uid, $board_id, $content, $board){
if($board_id == '1'){ // 실제 게시판 id로 적용해보세요.
$user = wp_get_current_user();
$check = wc_customer_bought_product($user->user_email, $content->member_uid, $content->category1);
if(!$check){
echo '<script>alert("상품을 구매한 사용자만 글을 작성할 수 있습니다.")</script>';
echo '<script>window.history.back()</script>';
exit;
}
}
}
위의 코드에서 $board_id == '1' 부분은 실제 게시판 id로 적용해보세요.
테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.
고맙습니다.
답변 감사드립니다.
권해주신 액션코드를 잘 모르겠어서
어떻게 사용해야하는지 알려주실 수 있으실까요?
안녕하세요~^^
우커머스 상품에 KBoard 게시판 연결할 때
KBoard 카테고리1에 우커머스 상품 ID와 연동하고 있습니다.
게시글 등록 전에 코드를 추가하고 체크를 하시려면
kboard_pre_document_insert 액션을 활용해보시겠어요?
kboard_pre_document_insert 액션은 아래의 코드를 활용해보세요.
add_action('kboard_pre_document_insert', 'kboard_pre_document_insert_20210218', 10, 4);
function kboard_pre_document_insert_20210218($content_uid, $board_id, $content, $board){
// 이곳에 코드를 추가해보세요.
}
사용자가 해당 상품을 구매했는지 체크하시려면
우커머스 내장 함수인 wc_customer_bought_product 함수를 활용해보시겠어요?
자세한 내용은 아래 링크를 참고 부탁드립니다.
http://hookr.io/functions/wc_customer_bought_product/
고맙습니다.