우커머스 상품평 탭 제거 & 케이보드 게시판 연동하기

Last Updated: 2023년 10월 23일 | | 댓글 남기기

워드프레스 우커머스 쇼핑몰에서 상품평 탭을 제거하고 대신 케이보드(Kboard) 게시판을 연동할 수 있습니다. 상품평 탭은 여러 가지 방법으로 제거할 수 있습니다. 모든 상품 페이지에서 사용자 리뷰 탭을 제거하거나 개별 상품 페이지에서 리뷰 탭이 표시되지 않도록 하는 것이 가능합니다.

워드프레스 우커머스 상품평 탭 제거하기

워드프레스 우커머스(WooCommerce) 쇼핑몰을 운영하는 경우 보통 개별 상품 페이지 하단에 상품평(Reviews) 탭이 표시됩니다.

워드프레스 플랫섬 테마 상품 리뷰 탭

스타일은 테마에 따라 조금씩 다릅니다. 상기 그림은 우커머스 전용 테마인 플랫섬(Flatsome)의 상품평 탭을 보여줍니다. 아래는 아바다 테마가 설치된 워드프레스 사이트의 상품평 탭 레이아웃입니다.

워드프레스 아바다 테마 상품평 탭

우커머스 상품 리뷰 기능을 향상시키고 싶다면 YITH WooCommerce Advanced Reviews와 같은 상품평 플러그인을 사용할 수 있습니다. Google 리뷰 스니핏과 통합되어 있으므로 리뷰 평점이 구글 검색 결과에 노출되도록 할 수 있습니다.

우커머스 상품평 탭 제거 & 케이보드 게시판 연동하기 2

모든 상품 페이지에서 우커머스 상품평 탭 제거하기

모든 상품 페이지에서 상품평 탭을 삭제하고 싶은 경우 다음과 같은 코드를 테마(차일드 테마를 만들어 작업하세요)의 함수 파일에 추가하도록 합니다.

/**
 * Custom function to remove the Reviews tab from Woocommerce product pages.
 * 우커머스 상품 페이지에서 상품평 탭을 제거하는 커스텀 함수
 *
 * @param array $tabs Default WooCommerce product tabs.
 * @return array Updated list of tabs.
 */
add_filter( 'woocommerce_product_tabs', 'custom_remove_reviews_tab', 98 );
function custom_remove_reviews_tab($tabs) {
    unset($tabs['reviews']);
    return $tabs;
}

특정 카테고리에서만 제거하고 싶은 경우에는 다음과 같이 조건을 추가할 수 있습니다. (아래 코드는 테스트하지 않았습니다.)

add_filter( 'woocommerce_product_tabs', 'custom_remove_reviews_for_specific_category', 98 );
function custom_remove_reviews_for_specific_category($tabs) {
    global $product;

    if ( is_a($product, 'WC_Product') && has_term('example-category', 'product_cat', $product->get_id()) ) {
        unset($tabs['reviews']);
    }

    return $tabs;
}

또 다른 방법으로 Disable WooCommerce Reviews라는 플러그인을 사용할 수도 있습니다. 하지만 간단한 코드를 추가하여 리뷰 탭을 제거할 수 있으므로 굳이 플러그인을 사용하는 것은 바람직하지 않습니다.

개별 상품 페이지에서 상품평 탭 비활성화하기

일부 상품 페이지에서만 상품평 탭을 비활성화하고 싶은 경우에는 상품 편집 페이지에서 고급 » 상품평 활성화 체크란의 선택을 해제합니다.

개별 상품 페이지에서 리뷰 탭 비활성화

우커머스 상품에 케이보드(KBoard) 게시판 연동하기

상품평 탭을 제거하고 대신 케이보드 게시판을 연결할 수 있습니다. 자세한 방법은 케이보드 블로그 글을 참고해보세요.

워드프레스 최신 버전(현재: 6.3.2 버전), PHP 8.0에서 테스트하니 잘 작동했습니다.

스킨을 직접 수정하지 말고 대신 스킨을 복사한 다음, 스킨 이름을 변경하여 커스텀 스킨을 만들어 작업하면 추후 케이보드 업데이트 시에도 수정 사항이 유지될 것입니다.

document.php 파일에 추가하는 코드는 적절히 응용하여 추가할 수 있습니다. 예시:

<p class="reviewed-product"><span>상품명:</span> <a href="<?php echo get_permalink($content->category1)?>" target="_blank"><?php echo get_the_title($content->category1)?></a></p>
<?php endif?><p style="height:30px;"> </p>	

상품리뷰 게시판 설정 시 상품을 실제로 구매한 사용자만 해당 상품 페이지에서 글을 작성할 수 있도록 하고 싶다면 코드를 추가해야 합니다. 예시:

/**
 * Restrict the ability to insert a KBoard document based on certain conditions.
 *
 * @param int      $content_uid Unique ID of the content.
 * @param int      $board_id ID of the board.
 * @param object   $content Content object.
 * @param object   $board Board object.
 */
add_action('kboard_pre_document_insert', 'restrict_kboard_document_insertion', 10, 4);
function restrict_kboard_document_insertion($content_uid, $board_id, $content, $board){
    // Apply restrictions only for board with ID '1'
    if($board_id == '1'){
        $currentUser = wp_get_current_user();

        // Check if the current user has bought the product associated with this content
        $hasBoughtProduct = wc_customer_bought_product($currentUser->user_email, $content->member_uid, $content->category1);
        
        if(!$hasBoughtProduct){
            echo '<script>alert("상품을 구매한 사용자만 글을 작성할 수 있습니다."); window.history.back();</script>';
            exit;
        }
        
        $contentList = new KBContentList($board_id);
        $contentList->category1 = $content->category1;
        $contentList->member_uid = $content->member_uid;

        $existingEntries = $contentList->getList();
        
        // Ensure a user can only write one review per product
        if($existingEntries){
            echo '<script>alert("상품평은 1회만 작성하실 수 있습니다."); window.history.back();</script>';
            exit;
        }
    }
}

위의 코드는 케이보드 포럼 글에 제시된 코드를 개선한 것입니다. 이 코드를 사용하면 사용자가 글을 작성한 후에 제출하기 버튼을 누를 때 해당 사용자가 해당 제품을 구매했는지를 체크하게 됩니다.

"글쓰기" 버튼을 누를 때 구매자인지를 체크하는 코드를 추가하는 것도 고려할 수 있습니다. 이를 위해서는 list.php 파일을 수정해야 합니다. 예를 들어, 케이보드 포럼 글에서 제시하는 코드를 추가하고, list.php 파일을 다음과 같이 수정할 수 있습니다.

<!-- ... 기존 코드 ... -->

<script type="text/javascript">
    function checkUserPermission(event) {
        <?php 
            if(current_user_can('administrator')) { 
                // Allow administrators
                echo 'return true;';
            } else {
                echo 'event.preventDefault();';
                echo 'alert("상품 구매자만 상품평을 작성할 수 있습니다");';
                echo 'return false;';
            }
        ?>
    }
</script>


<!-- ... 기존 코드 ... -->

<?php if($board->isWriter()):?><!-- 버튼 시작 --><div class="kboard-control">    <a href="<?php echo esc_url($url->getContentEditor())?>" class="kboard-default-button-small" onclick="return checkUserPermission(event);"><?php echo __('New', 'kboard')?></a></div><!-- 버튼 끝 --><?php endif?>

<!-- ... 나머지 코드 ... -->

위의 코드를 사용하면 실제 구매자와 관리자만 Kboard 게시판에 글을 작성할 수 있게 될 것입니다. (제한된 환경에서만 테스트했기 때문에 모든 환경에서 제대로 작동하는지는 체크하지 않았습니다.)

마치며

이상으로 우커머스 상품 페이지에서 상품평 탭을 제거하는 방법과 우커머스 상품 페이지에 케이보드 게시판을 연동하는 방법에 대하여 살펴보았습니다. 네이버 카페에 이와 관련된 질문이 올라와서 정리해 보았습니다.

참고


댓글 남기기

Leave a Comment