کدهای مربوط به بخش نظرات وردپرس

در این مقاله قصد داریم قطعه کدهای مربوط به قسمت نظرات (دیدگاه‌ها) وردپرس را بررسی کنیم. مورد به مورد کد نظرات وردپرس را شرح می‌دهیم که چه قطعه کدهایی در قسمت نظرات وردپرس وجود دارند و وظیفه‌ی آنها چیست.

کد نظرات وردپرس

جلوگیری از دسترسی مستقیم به comments.php

<?php if(!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) : ?>
<?php endif; ?>

این کد باعث جلوگیری ورود کاربر به صفحه comments.php می‌شود، برای چاپ مقداری می تونید از die استفاده کنید.

<?php if(!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) : ?>
<?php die('You can not access this page directly!'); ?>
<?php endif; ?>

کد درخواست رمز دیدگاه‌های وردپرس

<?php if(!empty($post->post_password)) : ?>
<?php if($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) : ?>
<?php endif; ?>
<?php endif; ?>

این قطعه کد قبل از دیدن پست از شما پسورد می خواد و اگر شما پسورد را نداشته باشید نمی تونید پست مربوطه را ببنید. در ادامه آموزش کد نظرات وردپرس با ما همراه باشید.

if اول چک می کند آیا پسوردی ست شده است یا نه؛ if دوم کوکی را چک می کند و اگر پسوردی نباشد پیغامی چاپ می‌کند، می توانید پیغام دل خواه خود را در if دوم قرار دهید.

کد نمایش دیدگاه‌های وردپرس

<?php if($comments): ?>
<?php foreach ($comments as $comment) : ?>
<?php if ($comment->comment_approved == '0') : ?>
<?php endif; ?>
<?php endforeach; ?>
<?php else : ?>
<?php endif; ?>

اولین شرط چک می کند آیا کامنتی هست ؟ اگر هست آن را داخل یک foreach قرار می دهد، داخل آن شرط دیگری هست که چک می‌کند اگر کامنت‌ها تایید شده بودند نمایش می‌دهد و اگر تایید نشده بودند پیغامی چاپ می کند.

مثال دیگر:

<?php if($comments) : ?>
<ol>
<?php foreach($comments as $comment) : ?>
<li>
<?php if($comment->comment_approved == '0') : ?>
Your comment is awaiting approval
<?php endif; ?>
Your comment
</li>
<?php endforeach; ?>
</ol>
<?php else : ?>
No comments
<?php endif; ?>

چند تگ مهم دیدگاه‌های وردپرس

در زیر چند مورد از تگ‌های مهم کد نظرات وردپرس را قرار دادم.

تگتوضیح
<?php comment_ID(); ?>ID دیدگاه
<?php comment_author(); ?>نویسنده دیدگاه
<?php comment_author_link(); ?>اگر نویسنده آدرس سایت وارد کرده باشد لینک آن را می‌دهد
<?php comment_type(); ?>نوع آن دیدگاه یا pingback یا trackback
<?php comment_text(); ?>متن دید‌گاه
<?php comment_date(); ?>تاریخ ارسال دیدگاه
<?php comment_time(); ?>زمان ارسال دیدگاه

نتیجه‌ی نهایی کد نظرات وردپرس:

<?php if($comments) : ?>
<ol>
<?php foreach($comments as $comment) : ?>
<li id="comment-<?php comment_ID(); ?>">
<?php if ($comment->comment_approved == '0') : ?>
Your comment is awaiting approval
<?php endif; ?>
<?php comment_text(); ?>
<cite>
<?php comment_type(); ?> by <?php comment_author_link(); ?> on <?php comment_date(); ?> at <?php comment_time(); ?>
</cite>
</li>
<?php endforeach; ?>
</ol>
<?php else : ?>
دیدگاهی وجود ندارد
<?php endif; ?>

این کد را در comment.php وارد کنید یک لیست از دیدگاه‌ها و اطلاعات آن‌ها به شما می‌دهد و اگر دیدگاهی نباشد می‌گوید دیدگاهی وجود ندارد.

عبارات شرطی در دیدگاه‌های وردپرس

<?php if(comments_open()) : ?>
<?php if(get_option('comment_registration') && !$user_ID) : ?>
<?php else : ?><?php if($user_ID) : ?>
<?php else : ?>
<?php endif; ?>
<?php endif; ?>
<?php else : ?>
<?php endif; ?>

اولین شرطی که می بینید اگر دیدگاه باز است که واضحه چی می‌شه اما اگر دیدگاه بسته باشد شما نمی‌توانید دیدگاهی بگذارید. دومین شرط این شرط چک می کنید آیا برای گذاشتن کامنت باید لوگین کنید یا نه اگر لوگین نباشید لینکی برای لوگین به شما نمایش داده خواهد شد. اگر لوگین کردن نیازی نباشد و یا شما لوگین کرده باشید فرم را به شما نشان می دهد.

و آخرین شرط چک می کند آیا شما لوگین کرده اید یا نه؟ اگر شما لوگین کرده باشید بی فایده است که از شما بخواهد قسمت نام ایمیل و وب سایت را پر کنید.

اضافه کردن فرم نظرات وردپرس

ما اینجا فرم نظرات وردپرس را ایجاد می‌کنیم، و شرط ها را نیز می‌نویسیم.

<?php if(comments_open()) : ?>
<?php if(get_option('comment_registration') && !$user_ID) : ?>
You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.
<?php else : ?>
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if($user_ID) : ?>
<?php else : ?>
<?php endif; ?>
</form>
<?php endif; ?>
<?php else : ?>
The comments are closed.
<?php endif; ?>

همان طور که قبلا گفتم آخرین شرط چک می کند آیا شما لوگین هستید یا نه؟فیلد های نام وب سایت و ایمیل زمانی به شما نشان داده می شود که شما لوگین نباشید.

بیاید آن را داخل کد ببینیم:

<?php if(comments_open()) : ?>
<?php if(get_option('comment_registration') && !$user_ID) : ?>
You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.
<?php else : ?>
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if($user_ID) : ?>
Logged in as <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">Log out &raquo;</a>
<?php else : ?>
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
<label for="author">
<small>Name <?php if($req) echo "(required)"; ?></small>
</label>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
<label for="email">
<small>Mail (will not be published) <?php if($req) echo "(required)"; ?></small>
</label>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url">
<small>Website</small>
</label>
<?php endif; ?>
</form>
<?php endif; ?>
<?php else : ?>
The comments are closed.
<?php endif; ?>

تقریبا کاملش کردیم و فقط چند خط کد ساده نیاز داریم برای ایجاد texteara و submit button و این ها را بعد از آخرین شرط قرار می دهیم.

<?php if(comments_open()) : ?>
<?php if(get_option('comment_registration') && !$user_ID) : ?>
You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.
<?php else : ?>
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if($user_ID) : ?>
Logged in as <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">Log out &raquo;</a>
<?php else : ?>
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
<label for="author">
<small>Name <?php if($req) echo "(required)"; ?></small>
</label>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
<label for="email">
<small>Mail (will not be published) <?php if($req) echo "(required)"; ?></small></label>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><small>Website</small></label>
<?php endif; ?>
<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea>
<input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
<?php do_action('comment_form', $post->ID); ?>
</form>
<?php endif; ?><?php else : ?>
The comments are closed.
<?php endif; ?>

نمایش آواتار در دیدگاه‌های وردپرس

از ورد پرس 2.5 به بعد کاستم تیمپلیت های وجود دارد که gravatars را امبد کرده است. اون gravatar را از ایمیل کاربر میکشد و این هم کد آن:

<?php echo get_avatar($author_email, $size, $default_avatar ); ?>

می تونید $author_email را با get_comment_author_email(); عوض کنید ، size ارتفاع و عرض را مشخص می کند. $default_avatar اگر کامنت گذار آواتاری نداشته باشد یک آواتار به صورت پیشفرض می گذارد.

این کد را داخل حلقه foreach قرار دهید تا کامنت ها را برای شما نمایان کند چیزی که به شما نمایش خواهد داد یک عکس با کلاس آواتار و avatar-$size همان سایزی که مشخص کردید ، با کمی سی اس اس می توانید چیزی شبیه شکل زیر داشته باشید .

نمایش تعداد دیدگاه‌های وردپرس

در بعضی موارد می‌بینید که نوشته ای با این مضمون وجود دارد 3 نظر تا کنون، انجام این کار به لطف تمپلیت تگ های ورد پرس بسیار را حت است .

<?php comments_number($zero_comments, $one_comment, $more_comments); ?>

$zero_comments متنیست که زمانی که کامنتی نسیت نمایش داده می شود

$one_comment زمانی که یک کامنت وجود داشته باشد نمایان می شود

$more_comments زمانی نمایان می شود که بیش از یک کامنت وجود داشته باشد .

مثال :

<?php comments_number('No comments', 'One comment', '% comments'); ?>

من از % برای چندین کامنت استفاده کردم.

فانکشن comments_number به جای % اعداد 2و3 و… قرار خواهد داد .

تو فایل comments.php خودمون ازش استفاده می کنیم و شما چیزی شبیه این خواهید دید.

لینک دیدگاه‌های وردپرس

برای اضافه کردن لینک کامنت از کد زیر استفاده می کنیم .

<?php comments_popup_link($zero_comments, $one_comment, $more_comments, $css_class, comments_closed); ?>

3 پارامتر اول مثل پارامتر های فانکشن comments_number هستند .

Css_class که واضح برای سی اس اس شماست.

comments_closed متنی است که موقع بستن کامنت نمایش داده می شود.

مثال:

<?php comments_popup_link('No comments', 'One comment', '% comments', 'comments-link');?>

comments-link به شما لینک سی اس اس را می دهد .

ویرایش دیدگاه‌های وردپرس

در مواقعی می خواهید کامنت را ویرایش کنید برای این کار از فانکشن زیر استفاده می کنیم :

<?php edit_comment_link($link_text, $before_link, $after_link); ?>

این کد را باید در داخل یک foreach قرار دهید .

link_text یک نوشته anchor است برای لینک ویرایش

after_link به ترتیب متن و یا کدی است که قبل و بعد لینک قرار می گیرد.

رنگ‌های متناوب برای دیدگاه‌های وردپرس

برای اینکه کامنت ها یکی در میان رنگی شود از کد زیر استفاده می کنیم :

function alternate_rows($i){
if($i % 2) {
echo ' class="alt"';
} else {
echo '';
}}

پایان…

در این آموزش کوتاه کد نظرات وردپرس را توضیح دادیم. امیدوارم از این آموزش کوتاه لذت برده باشید ، می توانید تمام این کد ها را از این لینک دریافت کنید ، واضح است comments link کار نمی کند مگر اینکه داخل یک لوپ استفاده بشود.

من کد کامل دیدگاه‌های وردپرس را در گیت‌هاب قرار دادم.

comments.php

<?php if(!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME'])) : ?>
<?php die('You can not access this page directly!'); ?>
<?php endif; ?> <?php if(!empty($post->post_password)) : ?>
<?php if($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) : ?>
This post is password protected. Enter the password to view comments.
<?php endif; ?><?php endif; ?> <?php if($comments) : ?>
<ol>
<?php foreach($comments as $comment) : ?>
<li id="comment-<?php comment_ID(); ?>">
<?php if ($comment->comment_approved == '0') : ?>
Your comment is awaiting approval
<?php endif; ?>
<?php comment_text(); ?>
<?php comment_type(); ?> by <?php comment_author_link(); ?> on <?php comment_date(); ?> at <?php comment_time(); ?>
</li>
<?php endforeach; ?>
</ol>
<?php else : ?>
No comments yet
<?php endif; ?> 
<?php if(comments_open()) : ?>
<?php if(get_option('comment_registration') && !$user_ID) : ?>
You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.
<?php else : ?>
<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform">
<?php if($user_ID) : ?>
Logged in as <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">Log out &raquo;</a>
<?php else : ?>
<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1" />
<label for="author"><small>Name <?php if($req) echo "(required)"; ?></small></label>
<input type="text" name="email" id="email" value="<?php echo $comment_author_email; ?>" size="22" tabindex="2" />
<label for="email">
<small>Mail (will not be published) <?php if($req) echo "(required)"; ?></small>
</label>
<input type="text" name="url" id="url" value="<?php echo $comment_author_url; ?>" size="22" tabindex="3" />
<label for="url"><small>Website</small></label>
<?php endif; ?>
<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea>
<input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
<?php do_action('comment_form', $post->ID); ?>
</form>
<?php endif; ?><?php else : ?>
The comments are closed.
<?php endif; ?>

۱۵ دیدگاه دربارهٔ «کدهای مربوط به بخش نظرات وردپرس»

  1. سلام
    میشه یک نگاه به بخش کد های قالب من بندازید؟
    پاسخ هایی که من میدم رو نشون نمیده همچنین پاسخ به این نظر رو هم نشون نمیده مثلا در این صفحه
    http://cesardl.info/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%81%DB%8C%D9%84%D9%85-%DA%AF%D8%B1%DA%AF-%D9%88-%DA%A9%D9%88%D8%AF%DA%A9-the-fox-and-the-child-2007-%D8%AF%D9%88%D8%A8%D9%84%D9%87-%D9%81%D8%A7%D8%B1%D8%B3/
    4 تا کامنت هستش ولی فقط یکیشو نشون میشده
    اینم کد های کامنت هستش
    http://cesardl.info/wp-content/uploads/2017/07/comments.txt
    ممنون

    1. باسلام
      پلاگین‌های زیادی وجود دارد می‌توانید در مخزن اصلی وردپرس جستجو بفرمایید.
      موفق باشید

  2. سلام
    ببخشید من میخوام که یک صفحه داشته باشم از کامنت هایی که در سایت قرار میگیرد را در آن صفحه مشاهده کنم هر کدام از کامنت هایی که در هر صفحه نشان میدهد.
    چطور میتوانم یک صفحه ای را بسازم و کدی قرار دهم که تمام کامنت ها در آن صفحه قرار بگیرد

    1. با سلام

      شما می‌توانید یک صفحه به صورت یک popup ایجاد کنید و در آن صفحه نظرات را نمایش دهید.

      موفق باشید

  3. سلام.خسته نباشید
    دیدگاه ها در مطالب سایت من نمایش داده نمی شد و اون کد نمایش دیدگاه که زحمت کشیدید گذاشاید مشکل را رفع کرد..ولی با یک گرافیک ضعیف.یعنی اصلا مشخص نیست که کدام پیام پاسخ من به کدام پیام مشتری بوده..همه دیدگاه ها به یه ترتیب شمارشی نمایش داده می شود و فرم نقل و قول ندارد..ممنون می شم در این پست ببینید و راهنماییم کنید..

    https://****.ir//

    1. با سلام وقت بخیر.

      شما باید با کمک سی اس اس ظاهر لیست نظرات را شخصی سازی کنید.

      موفق باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.