본문 바로가기

Custom Comment 사용

Publish: 2012.04.14.

워드프레스는 기본 comment 영역을 제공합니다.
Core에 기본 틀이 제작되어 있어 function만 호출하면 되지만 원하는 마크업으로 수정하기가 어렵습니다.
원하는 마크업과 디자인을 하기 위해서 따로 Function을 추가해서 사용합니다.

1. 테마 디렉토리 안에 comments.php 파일을 추가한다.

HTML

<?php
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
 die ('Please do not load this page directly. Thanks!');
if ( post_password_required() ) {
?>
 <p class="nocomments">비공개 댓글입니다. 비밀 번호를 입력하세요.</p>
<?php
 return;
}

function comment_add_microid($classes) {
 $c_email=get_comment_author_email();
 $c_url=get_comment_author_url();
 if (!empty($c_email) && !empty($c_url)) {
 $microid = 'microid-mailto+http:sha1:' . sha1(sha1('mailto:'.$c_email).sha1($c_url));
 $classes[] = $microid;
 }
 return $classes;
}
add_filter('comment_class','comment_add_microid');
if ( have_comments() ) :
?>
 <div id="commentList">
 <ul>
 <?php wp_list_comments('type=comment&callback=custom_comment_list'); ?>
 </ul>

 <div class="commentNav">
 <div class="prev"><?php previous_comments_link() ?></div>
 <div class="next"><?php next_comments_link() ?></div>
 </div>
 </div>
<?php else : ?>

<?php if ('open' == $post->comment_status) :
 // 댓글이 없을 경우
 else :
 // 댓글을 사용하지 않을 경우
 endif;

endif;

if ('open' == $post-> comment_status) :

if ( get_option('comment_registration') && !$user_ID ) : ?>
<div class="msgBox">
 <p>댓글을 작성하려면 <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">로그인</a>을 해야합니다.</p>
</div>

<?php else : ?>
<div id="commentForm">
 <h2><?php comment_form_title( '댓글', '%s님에게 댓글' ); ?> <span><?php cancel_comment_reply_link('취소'); ?></span></h2>
 <form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if ( $user_ID ) : ?>
 <p><a href="<?php echo get_option('siteurl'); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>님은 로그인중
 <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="Log out of this account">[로그아웃]</a></p>
<?php else : ?>
 <p><label for="author">이름 <?php if ($req) echo "(필수)"; ?></label>
 <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="10" tabindex="1" />
 <label for="email">이메일 <?php if ($req) echo "(필수)"; ?></label>
 <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="19" tabindex="2" />
 <label for="url">홈페이지</label>
 <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="19" tabindex="3" /></p>
<?php endif; ?>
<div>
<?php comment_id_fields(); ?>
 <input type="hidden" name="redirect_to" value="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>" /></div>
 <textarea name="comment" id="comment" cols="" rows="3" tabindex="5"></textarea>
<?php if (get_option("comment_moderation") == "1") { ?>
 <p><strong>알림:</strong> 모든 댓글은 관리자 검토 후에 노출 됩니다.</p>
<?php } ?>

<p><input name="submit" type="submit" id="submit" tabindex="5" value="댓글 달기" /></p>
<?php do_action('comment_form', $post->ID); ?>

</form>
<?php endif; ?>
</div>
<?php
endif;

2. 코멘트 리스트 callbak 함수 추가

function.php 에 아래 코드 추가

// Custom Comment List
function custom_comment_list($comment, $args, $depth) {
 $GLOBALS['comment'] = $comment; ?>
 <li id="comment-<?php comment_ID() ?>">
 <div class="avatar">
 <?php echo get_avatar( $comment->comment_author_email, 54 ); ?>
 </div>
 <p class="author"><?php printf(__('<strong>%s</strong>'), get_comment_author_link()) ?> <?php edit_comment_link(__('(수정)'),' ','') ?></p>
 <p class="commentMeta"><?php printf(__('%1$s, %2$s'), get_comment_date(), get_comment_time()) ?></p>
 <p><?php comment_reply_link(array_merge( $args, array('reply_text' => __('[답변]'), 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?></p>
 <?php comment_text() ?>
 <?php if ($comment->comment_approved == '0') : ?>
 <p class="alert"><strong><?php _e('관리자의 검토후에 노출됩니다.') ?></strong></p>
 <?php endif; ?>
 </li>
<?php
}

댓글 쓰기

This site uses Akismet to reduce spam. Learn how your comment data is processed.