تابع comment_author در وردپرس
تابع comment_author() یکی از توابع پایهای وردپرس برای نمایش نام نویسندهٔ یک دیدگاه (کامنت) است. این تابع معمولاً در فایلهای قالب مانند comments.php یا در callback های سفارشی برای wp_list_comments() استفاده میشود. در این مقاله به صورت جامع کاربردها، پارامترها، نکات امنیتی و نمونههای عملی را بررسی میکنیم.
عملکرد پایهای comment_author()
تابع comment_author() نام نویسندهٔ دیدگاه جاری را مستقیماً چاپ میکند. در حلقهٔ دیدگاهها (comment loop) یا در یک callback که شیء $comment را دریافت میکند، میتوانید از این تابع برای نمایش نام استفاده کنید.
<?php
// داخل حلقهٔ دیدگاهها
if ( have_comments() ) {
wp_list_comments( array(
'style' => 'ul',
'short_ping' => true,
'avatar_size' => 48,
) );
}
?>
کد بالا خود تابع را نمایش نمیدهد اما معمولاً قالبهای پیشفرض از callback ای استفاده میکنند که در آن comment_author() فراخوانی میشود. به طور معمول فراخوانی مستقیم به شکل زیر است:
<?php comment_author(); ?>
این خط ساده نام نویسندهٔ دیدگاه جاری را چاپ میکند.
تفاوت comment_author() و get_comment_author()
- comment_author(): نام را چاپ میکند (echo).
- get_comment_author(): نام را بازمیگرداند (return) و میتوانید آن را در متغیری ذخیره و پردازش کنید.
<?php
$author_name = get_comment_author();
echo '<span class="comment-author">' . esc_html( $author_name ) . '</span>';
?>
در این مثال از get_comment_author() برای گرفتن مقدار و سپس با esc_html() امنسازی خروجی استفاده شده است.
نمایش لینک به صفحهٔ نویسندهٔ دیدگاه
اگر نویسندهٔ دیدگاه آدرس سایت (URL) وارد کرده باشد میتوانید از comment_author_link() یا get_comment_author_link() استفاده کنید تا نام به صفحهٔ سایت نویسنده لینک شود.
<?php
// چاپ لینک به سایت نویسنده (در صورت وجود)
if ( function_exists( 'comment_author_link' ) ) {
comment_author_link();
}
?>
این تابع اگر URL وجود داشته باشد، نام نویسنده را درون تگ <a> با آدرس وارد شده قرار میدهد؛ در غیر این صورت تنها نام را نمایش میدهد.
نمونهٔ کامل در callback برای wp_list_comments()
در قالبهای حرفهای معمولاً یک callback سفارشی تعریف میشود تا ساختار HTML دیدگاه کاملاً کنترل شود. در مثال زیر نحوهٔ استفاده از comment_author_link و آواتار نمایش داده شده است:
<?php
function my_comment_callback( $comment, $args, $depth ) {
$GLOBALS['comment'] = $comment;
?>
<li id="comment-<?php comment_ID(); ?>">
<div class="comment-body">
<div class="comment-meta">
<?php echo get_avatar( $comment, 48 ); ?>
<span class="comment-author"><?php comment_author_link(); ?></span>
<span class="comment-time"><?php comment_time(); ?></span>
</div>
<div class="comment-text"><?php comment_text(); ?></div>
</div>
</li>
<?php
}
?>
در این callback ابتدا آواتار، سپس نام نویسنده (با لینک در صورت وجود) و زمان دیدگاه نمایش داده میشود. تابع comment_author_link() به طور خودکار نام را لینک میکند اگر آدرس وب وارد شده باشد.
نکات امنیتی و فرمتبندی خروجی
- هرگاه از
get_comment_author()استفاده میکنید حتماً خروجی را با توابع escaping مثلesc_html()یاwp_kses_post()امن سازی کنید تا از حملات XSS جلوگیری شود. - تابع
comment_author()نیز به صورت پیشفرض برخی فیلترها را اعمال میکند، اما در مواقعی که داده پردازش میشود و ترکیب HTML دارید، خودتان باید اعتبارسنجی کنید. - در صورت استفاده از
comment_author_link()، ممکن است لینک خارجی مخرب وارد شود؛ برای جلوگیری میتوانید ازrel="nofollow noopener noreferrer"و تابعesc_url()при نیاز استفاده کنید.
<?php
// نمونه امن برای نمایش نام با لینک سفارشی
$author_link = get_comment_author_link();
echo wp_kses( $author_link, array(
'a' => array(
'href' => array(),
'rel' => array(),
'title' => array(),
'target' => array(),
),
) );
?>
کد بالا خروجی لینک را با لیست صریحی از تگها و ویژگیهای مجاز فیلتر میکند تا HTML خطرناک حذف شود.
موارد کاربرد و نکات پیشرفته
- نمایش نام نویسنده در بخش نظرات همراه با نقش یا آیکون کاربران ثبتنامشده.
- تبدیل نامهای خالی به یک مقدار پیشفرض مثل “مهمان” یا “Guest”.
- ساخت لینک به پروفایل کاربر در صورتی که
user_idثبت شده باشد (با استفاده ازget_commentو بررسی$comment->user_id). - نمایش نام با افزودن ترجمه یا استایل CSS مخصوص هر نقش کاربری.
<?php
// مثال: نمایش نام یا مقدار پیشفرض در صورت خالی بودن
$author = trim( get_comment_author() );
if ( empty( $author ) ) {
$author = __( 'مهمان', 'your-textdomain' );
}
echo '<span class="comment-author">' . esc_html( $author ) . '</span>';
?>
در این قطعه، اگر نام نویسنده خالی باشد، مقدار “مهمان” نمایش داده میشود و با تابع ترجمهپذیری __() پوشش داده شده است.
جدول مقایسهٔ توابع مرتبط
| تابع | نحوهٔ خروجی | کاربرد |
|---|---|---|
| comment_author() | چاپ (echo) | نمایش مستقیم نام نویسنده |
| get_comment_author() | بازگرداندن مقدار (return) | وقتی نیاز به پردازش یا امنسازی دارید |
| comment_author_link() | چاپ لینک (در صورت وجود URL) | نمایش نام لینکشده به سایت نویسنده |
| get_comment_author_link() | بازگرداندن لینک | برای پردازش یا فیلتر کردن خروجی |
نتیجهگیری و بهترین روشها
تابع comment_author() ساده و کاربردی است اما برای قالبهای حرفهای و امن باید از ترکیب آن با توابعی مانند get_comment_author()، esc_html()، و wp_kses() استفاده کنید. همچنین بهتر است همیشه خروجیهای کاربر را اعتبارسنجی و فرمت کنید، لینکها را کنترل کرده و از ترجمهپذیری در متنهای پیشفرض بهره ببرید.
با رعایت نکات بالا میتوانید نام نویسندهٔ دیدگاهها را به شکلی امن، زیبا و قابل سفارشیسازی در قالب وردپرس خود نمایش دهید.
آیا این مطلب برای شما مفید بود ؟




