>CMS 튜토리얼 >Word누르다 >WordPress 테마 생성 전체 과정(10): comments.php 만들기

WordPress 테마 생성 전체 과정(10): comments.php 만들기

藏色散人
藏色散人앞으로
2023-02-21 10:12:301863검색

"워드프레스 테마 제작 전 과정(9): Single.php 만들기"에 대해 소개해 드렸습니다. 이번 글에서는 계속해서 comments.php 만드는 방법을 소개해드리겠습니다~

WordPress 테마 생성 전체 과정(10): comments.php 만들기

오늘은 여기까지입니다. 댓글 주제에 대한 댓글 모듈을 만듭니다. 테마 디렉토리 Aurelius 아래에 새로운 comments.php를 생성하고, Single.php에서 다음 코드를 잘라낸 후 comments.php에 붙여넣으세요:

<!– Comment’s List –>
<h3>Comments</h3>
<div class="hr dotted clearfix"> </div>
<ol class="commentlist">
<li class="comment">
<div class="gravatar"> <img alt="" src=’images/gravatar.png’ height=’48′ width=’48′ /> <a class="comment-reply-link" href=">Reply</a> </div>
<div class="comment_content">
<div class="clearfix"> <cite class="author_name"><a href="">Joe Bloggs</a></cite>
<div class="comment-meta commentmetadata">January 6, 2010 at 6:26 am</div>
</div>
<div class="comment_text">
<p>Donec leo. Aliquam risus elit, luctus vel, interdum vitae, malesuada eget, elit. Nulla vitae ipsum. Donec ligula ante, bibendum sit amet, elementum quis, viverra eu, ante. Fusce tincidunt. Mauris pellentesque, arcu eget feugiat accumsan, ipsum mi molestie orci, ut pulvinar sapien lorem nec dui.</p>
</div>
</div>
</li>
</ol>
<div class="hr clearfix"> </div>
<!– Comment Form –>
<form id="comment_form" action="" method="post">
<h3>Add a comment</h3>
<div class="hr dotted clearfix"> </div>
<ul>
<li class="clearfix">
<label for="name">Your Name</label>
<input id="name" name="name" type="text" />
</li>
<li class="clearfix">
<label for="email">Your Email</label>
<input id="email" name="email" type="text" />
</li>
<li class="clearfix">
<label for="email">Your Website</label>
<input id="website" name="website" type="text" />
</li>
<li class="clearfix">
<label for="message">Comment</label>
<textarea id="message" name="message" rows="3" cols="40"></textarea>
</li>
<li class="clearfix">
<!– Add Comment Button –>
<a type="submit" class="button medium black right">Add comment</a> </li>
</ul>
</form>

single.php의 원래 위치에 코드를 추가하세요:

<?php comments_template(); ?>

함수 위의 문장은 comments.php를 추가하는 것입니다. 모든 내용을 Single.php로 가져오는 것은 comments.php의 코드를 Single.php에서 직접 작성하는 것과 동일한 효과를 갖습니다.

보안상의 이유와 악의적인 사용자가 댓글 파일을 직접 열지 못하도록 하려면 comments.php 헤더에 다음 코드를 추가하세요:

<?php
if (isset($_SERVER[&#39;SCRIPT_FILENAME&#39;]) && &#39;comments.php&#39; == basename($_SERVER[&#39;SCRIPT_FILENAME&#39;]))
die (&#39;Please do not load this page directly. Thanks!&#39;);
?>

워드프레스의 출력 댓글 함수 wp_list_comments()에서 출력되는 댓글 코드가 댓글과 다르기 때문입니다. 테마 코드 예, 댓글 목록을 사용자 정의하고 comments.php에서 다음 코드를 삭제해야 합니다(다음 코드는 기사에 대한 모든 댓글을 나열하는 데 사용됩니다):

<li class="comment">
<div class="gravatar"> <img alt="" src=’images/gravatar.png’ height=’48′ width=’48′ /> <a class="comment-reply-link" href=">Reply</a> </div>
<div class="comment_content">
<div class="clearfix"> <cite class="author_name"><a href="">Joe Bloggs</a></cite>
<div class="comment-meta commentmetadata">January 6, 2010 at 6:26 am</div>
</div>
<div class="comment_text">
<p>Donec leo. Aliquam risus elit, luctus vel, interdum vitae, malesuada eget, elit. Nulla vitae ipsum. Donec ligula ante, bibendum sit amet, elementum quis, viverra eu, ante. Fusce tincidunt. Mauris pellentesque, arcu eget feugiat accumsan, ipsum mi molestie orci, ut pulvinar sapien lorem nec dui.</p>
</div>
</div>
</li>

다음으로 변경:

<?php 
    if (!empty($post->post_password) && $_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) { 
        // if there's a password
        // and it doesn't match the cookie
    ?>
    <li class="decmt-box">
        <p><a href="#addcomment">请输入密码再查看评论内容.</a></p>
    </li>
    <?php 
        } else if ( !comments_open() ) {
    ?>
    <li class="decmt-box">
        <p><a href="#addcomment">评论功能已经关闭!</a></p>
    </li>
    <?php 
        } else if ( !have_comments() ) { 
    ?>
    <li class="decmt-box">
        <p><a href="#addcomment">还没有任何评论,你来说两句吧</a></p>
    </li>
    <?php 
        } else {
            wp_list_comments(&#39;type=comment&callback=aurelius_comment&#39;);
        }
    ?>

또한 가능합니다 위 코드의 일반적인 의미를 참조하십시오. 결과는 다음과 같습니다. if... then... 위의 조건 중 어느 것도 충족되지 않으면 모든 주석이 나열됩니다. 이제 테마 폴더 Aurelius에 있는 function.php의 ?>를 다음 코드로 변경하세요. 이전에 이 블로그에서 다운로드한 function.php에 이미 다음 코드가 있으면 추가할 필요가 없습니다.

function aurelius_comment($comment, $args, $depth) 
{
   $GLOBALS['comment'] = $comment; ?>
   <li class="comment" id="li-comment-<?php comment_ID(); ?>">
<div class="gravatar"> <?php if (function_exists(&#39;get_avatar&#39;) && get_option(&#39;show_avatars&#39;)) { echo get_avatar($comment, 48); } ?>
 <?php comment_reply_link(array_merge( $args, array(&#39;reply_text&#39; => '回复','depth' => $depth, 'max_depth' => $args['max_depth']))) ?> </div>
<div class="comment_content" id="comment-<?php comment_ID(); ?>">
<div class="clearfix">
<?php printf(__('<cite class="author_name">%s</cite>'), get_comment_author_link()); ?>
<div class="comment-meta commentmetadata">发表于:<?php echo get_comment_time(&#39;Y-m-d H:i&#39;); ?></div>
   <?php edit_comment_link(&#39;修改&#39;); ?>
</div>
<div class="comment_text">
<?php if ($comment->comment_approved == '0') : ?>
<em>你的评论正在审核,稍后会显示出来!</em><br />
      <?php endif; ?>
      <?php comment_text(); ?>
</div>
</div>
<?php } ?>

위 코드는 WordPress 함수 및 해당 설명을 사용합니다.

함수 이름 함수 함수
get_avatar($comment, 48) 댓글 작성자의 그라바타 아바타를 가져옵니다. 크기는 48 * 48
comment_reply_link() 메시지 답글 링크
get_comment_author_link 는 댓글 작성자의 블로그 주소
get_comment_time 댓글 게시 시간을 가져오는 데 사용됩니다
edit_comment_link 관리자가 댓글 링크를 수정했습니다
comment_text() 댓글 내용 출력

자, 이제 글 페이지 하단에 댓글이 정상적으로 표시됩니다! 이제 계속해서 댓글 제출 양식을 만들고 다음 코드(즉, 댓글 양식의 코드)를 삭제하고

<!– Comment Form –>
<form id="comment_form" action="" method="post">
<h3>Add a comment</h3>
<div class="hr dotted clearfix"> </div>
<ul>
<li class="clearfix">
<label for="name">Your Name</label>
<input id="name" name="name" type="text" />
</li>
<li class="clearfix">
<label for="email">Your Email</label>
<input id="email" name="email" type="text" />
</li>
<li class="clearfix">
<label for="email">Your Website</label>
<input id="website" name="website" type="text" />
</li>
<li class="clearfix">
<label for="message">Comment</label>
<textarea id="message" name="message" rows="3" cols="40"></textarea>
</li>
<li class="clearfix">
<!– Add Comment Button –>
<a type="submit" class="button medium black right">Add comment</a> </li>
</ul>
</form>

로 변경하고 다음으로 변경합니다.

<?php 
if ( !comments_open() ) :
// If registration required and not logged in.
elseif ( get_option(&#39;comment_registration&#39;) && !is_user_logged_in() ) : 
?>
<p>你必须 <a href="<?php echo wp_login_url( get_permalink() ); ?>">登录</a> 才能发表评论.</p>
<?php else  : ?>
<!-- Comment Form -->
<form id="commentform" name="commentform" action="<?php echo get_option(&#39;siteurl&#39;); ?>/wp-comments-post.php" method="post">
    <h3>发表评论</h3>
    <div class="hr dotted clearfix"> </div>
    <ul>
        <?php if ( !is_user_logged_in() ) : ?>
        <li class="clearfix">
            <label for="name">昵称</label>
            <input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="23" tabindex="1" />
        </li>
        <li class="clearfix">
            <label for="email">电子邮件</label>
            <input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="23" tabindex="2" />
        </li>
        <li class="clearfix">
            <label for="email">网址(选填)</label>
            <input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="23" tabindex="3" />
        </li>
        <?php else : ?>
        <li class="clearfix">您已登录:<a href="<?php echo get_option(&#39;siteurl&#39;); ?>/wp-admin/profile.php"><?php echo $user_identity; ?></a>. <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="退出登录">退出 »</a></li>
        <?php endif; ?>
        <li class="clearfix">
            <label for="message">评论内容</label>
            <textarea id="message comment" name="comment" tabindex="4" rows="3" cols="40"></textarea>
        </li>
        <li class="clearfix">
            <!-- Add Comment Button -->
            <a href="javascript:void(0);" onClick="Javascript:document.forms[&#39;commentform&#39;].submit()" class="button medium black right">发表评论</a> </li>
    </ul>
    <?php comment_id_fields(); ?>
    <?php do_action(&#39;comment_form&#39;, $post->ID); ?>
</form>
<?php endif; ?>
Function name Function function
is_user_logged_in 사용자가 로그인되어 있는지 확인
wp_login_url 블로그 로그인 주소
get_comment_author_link 를 사용하여 댓글 작성자의 블로그 주소
$comment_author 사용자가 이전에 게시한 경우 쿠키 읽기 댓글을 단 후 사용자가 사용자 이름을 입력하는 데 자동으로 도움이 됩니다
$comment_author_email 쿠키를 읽으십시오. 사용자가 이전에 댓글을 작성한 경우 자동으로 사용자 이름을 입력하는 데 도움이 됩니다. 이메일
$comment_author_url 쿠키 읽기, 사용자가 이전에 댓글을 단 경우 이전에 댓글을 작성한 경우 자동으로 사용자가 블로그 주소를 입력하는 데 도움이 됩니다
do_action('comment_form', $post->ID); 이 기능은 일부 플러그인에만 사용됩니다
wp_logout_url 로그아웃 링크

추천 학습: "WordPress Tutorial"

위 내용은 WordPress 테마 생성 전체 과정(10): comments.php 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 ludou.org에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제