ویژگی تصویر

آموزش تابع comment_author() در وردپرس و کاربرد آن

  /  وردپرس   /  تابع comment_author در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

تابع 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() استفاده کنید. همچنین بهتر است همیشه خروجی‌های کاربر را اعتبارسنجی و فرمت کنید، لینک‌ها را کنترل کرده و از ترجمه‌پذیری در متن‌های پیش‌فرض بهره ببرید.

با رعایت نکات بالا می‌توانید نام نویسندهٔ دیدگاه‌ها را به شکلی امن، زیبا و قابل سفارشی‌سازی در قالب وردپرس خود نمایش دهید.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: