ホームページ >CMS チュートリアル >&#&プレス >WordPressテーマ作成全工程(10):comments.phpの作成

WordPressテーマ作成全工程(10):comments.phpの作成

藏色散人
藏色散人転載
2023-02-21 10:12:301897ブラウズ

WordPressテーマ制作の全工程(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;);
?>

コメント コードは WordPress の出力によって出力されるため、コメント関数 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 に既に次のコードが含まれている場合は、追加する必要はありません。 ## 上記のコードと対応する説明で使用されている WordPress 関数:

関数名get_avatar($comment, 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>
関数 function
コメント投稿者の Gravatar アバターを取得します。サイズは 48 * 48
メッセージに返信するリンク
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 } ?>

関数名

関数取得に使用されますコメント投稿者のブログ アドレス$comment_authorCookie を読み取ります。ユーザーが以前にコメントを投稿したことがある場合は、自動的にユーザーがメールアドレスを入力するのに役立ちますCookie を読み取ります (ユーザーが以前にコメントを作成したことがある場合、ユーザーがブログ アドレスを入力するのに自動的に役立ちます) #do_action('comment_form', $post- >ID);この機能は一部のプラグインの予約ですwp_logout_urlログアウト リンクWordPress チュートリアル >>」
##is_user_logged_in ##ユーザーがログインしているかどうかを判断します
wp_login_url ブログのログイン アドレス
##get_comment_author_link
Cookie を読み取り、ユーザーが以前にコメントを投稿したことがある場合は、自動的にユーザー名の入力を支援します $ comment_author_email
$comment_author_url
推奨学習: 「

以上がWordPressテーマ作成全工程(10):comments.phpの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はludou.orgで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。