Maison  >  Article  >  Tutoriel CMS  >  Tout le processus de création d'un thème WordPress (10) : faire des commentaires.php

Tout le processus de création d'un thème WordPress (10) : faire des commentaires.php

藏色散人
藏色散人avant
2023-02-21 10:12:301819parcourir

Je vous ai présenté "L'ensemble du processus de production d'un thème WordPress (9) : Création de single.php". Cet article continue de vous présenter comment créer des commentaires.php. Voyons-le ensemble~

Tout le processus de création d'un thème WordPress (10) : faire des commentaires.php.

Aujourd'hui, nous sommes ici Créer un module de commentaires pour les sujets de commentaires. Créez un nouveau comments.php sous le répertoire du thème Aurelius, coupez le code suivant dans single.php et collez-le dans 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>

Ajoutez le code à l'emplacement d'origine de single.php :

<?php comments_template(); ?>

La fonction de l'instruction ci-dessus consiste à ajouter comments.php. Importer tout le contenu dans single.php a le même effet que d'écrire le code dans comments.php directement dans single.php.

Pour des raisons de sécurité et pour empêcher des utilisateurs malveillants d'ouvrir directement le fichier de commentaire, veuillez ajouter le code suivant dans l'en-tête 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;);
?>

Parce que le code de commentaire généré par la fonction de commentaire de sortie de WordPress wp_list_comments() est différent du commentaire code de notre thème Oui, nous devons personnaliser notre liste de commentaires et supprimer le code suivant dans comments.php (le code suivant est utilisé pour lister tous les commentaires sur l'article) :

<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>

Changez-le par :

<?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;);
        }
    ?>

Vous pouvez également voir la signification générale du code ci-dessus Le résultat est beaucoup de si... alors..., si aucune des conditions ci-dessus n'est remplie, tous les commentaires seront répertoriés. Maintenant, remplacez le ?> dans le fichier Functions.php du dossier du thème Aurelius par le code suivant. Si le fichier Functions.php que vous avez téléchargé depuis ce blog contient déjà le code suivant, il n'est pas nécessaire de l'ajouter :

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 } ?>

Ce qui précède. le code est utilisé pour la fonction WordPress et la description correspondante :

Nom de la fonction Fonction de la fonction
get_avatar($comment, 48) Obtenir l'avatar gravatar du commentateur, la taille est 48 * 48
comment_reply_link() Le lien pour répondre au message
get_comment_author_link est utilisé pour obtenir l'adresse du blog du commentateur
get_comment_time Obtenir l'heure de publication du commentaire
edit_comment_link L'administrateur a modifié le lien du commentaire
comment_text() Sortir le contenu du commentaire

Bon, maintenant les commentaires peuvent être affichés normalement en bas de la page de votre article ! Maintenant, nous continuons à créer le formulaire de soumission de commentaires, supprimons le code suivant (c'est-à-dire le code du formulaire de commentaire) :

<!– 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>

et remplacez-le par :

<?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; ?>
Nom de la fonction Fonction de la fonction
is_user_logged_in Déterminer si l'utilisateur est connecté
wp_login_url l'adresse de connexion du blog
get_comment_author_link est utilisée pour obtenir l'adresse du blog du commentateur
$comment_author lire le cookie si l'utilisateur a déjà posté Après avoir commenté, cela aidera automatiquement l'utilisateur à remplir le nom d'utilisateur
$comment_author_email Lisez le cookie, si l'utilisateur a déjà fait un commentaire, cela aidera automatiquement l'utilisateur à remplir dans l'e-mail
$comment_author_url Lire le cookie, si l'utilisateur a déjà commenté Si un commentaire a déjà été fait, cela aidera automatiquement l'utilisateur à remplir l'adresse du blog
do_action('comment_form', $post->ID); Cette fonction est réservée à certains plug-ins
wp_logout_url Lien de déconnexion

Apprentissage recommandé : "Tutoriel WordPress"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer