ویژگی تصویر

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

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

تابع get_comment_author() یکی از توابع پایه‌ای وردپرس برای گرفتن نام نویسنده یک دیدگاه (comment) است. این تابع نام نویسنده را برمی‌گرداند و معمولاً در قالب‌های نمایش دیدگاه‌ها (comments.php یا callback برای wp_list_comments) به کار می‌رود. در این مقاله به صورت جامع نحوۀ استفاده، نمونه‌های عملی، نکات امنیتی و بهینه‌سازی سئوی مرتبط را بررسی می‌کنیم.

چه چیزی برمی‌گردد و تفاوت با توابع مشابه

  • get_comment_author(): مقدار نام نویسنده را برمی‌گرداند (string). اگر پارامتری ندهید، از متغیر سراسری $comment استفاده می‌کند.
  • comment_author(): همان مقدار را چاپ (echo) می‌کند، معادل echo get_comment_author().
  • get_comment_author_link(): معمولاً نام نویسنده را به همراه لینک آدرس وب‌سایتش (در صورت وجود) برمی‌گرداند.

امضای تابع و ورودی‌ها

امضای پایه‌ای تابع به شکل زیر است:

string get_comment_author( int|WP_Comment|null $comment = null )

یعنی می‌توانید یا شناسه دیدگاه (ID)، یا شیء WP_Comment، یا هیچ پارامتری (درون لوپ دیدگاه) به تابع بدهید.

مثال‌های کاربردی

مثال ساده در محل نمایش دیدگاه‌ها

<?php
// داخل حلقه یا callback دیدگاه‌ها
echo esc_html( get_comment_author() );
?>

توضیح: این مثال نام نویسنده را چاپ می‌کند و با esc_html از خروجی برای جلوگیری از تزریق کد محافظت می‌کند.

دریافت نام نویسنده برای شناسه مشخص

<?php
$author_name = get_comment_author( 123 ); // 123 شناسه دیدگاه
?>

توضیح: برای زمان‌هایی که به صورت برنامه‌نویسانه می‌خواهید اسم نویسنده دیدگاه خاصی را بخوانید، شناسه دیدگاه را به تابع می‌دهید. خروجی را مجدداً قبل از چاپ باید اِسکیپ (escape) کنید.

درون callback سفارشی برای wp_list_comments

<?php
function my_comment_callback( $comment, $args, $depth ) {
    $author = get_comment_author( $comment );
    echo '<li class="comment-item">';
    echo '<cite class="fn">' . esc_html( $author ) . '</cite>';
    // ادامهٔ نمایش دیدگاه...
    echo '</li>';
}
?>

توضیح: در callback، $comment یک شیء WP_Comment است. از کلاس fn و تگ cite برای رعایت استانداردهای دسترسی و سِمَنتیک استفاده شده است که به سئوی محتوای دیدگاه‌ها کمک می‌کند.

نکات امنیتی و بهترین شیوه‌ها

  • همیشه خروجی را قبل از چاپ، اِسکیپ کنید: esc_html() برای متن ساده، wp_kses() یا wp_kses_post() برای HTML مجاز.
  • به داده‌های ورودی دیدگاه اعتماد نکنید؛ نام نویسنده می‌تواند شامل کاراکترهای مخرب باشد.
  • برای لینک‌ها از esc_url() و برای مقادیر HTML از esc_attr() استفاده کنید.

فیلترها و سفارشی‌سازی (Filters)

وردپرس قبل از بازگرداندن نام نویسنده، اعمال یک فیلتر می‌کند: apply_filters(‘get_comment_author’, $author, $comment_ID). می‌توانید با این فیلتر خروجی را تغییر دهید—مثلاً افزودن آواتار، برچسب “مهمان”، یا حذف نام‌های نامناسب.

add_filter( 'get_comment_author', 'my_comment_author_filter', 10, 2 );
function my_comment_author_filter( $author, $comment_id ) {
    if ( empty( $author ) ) {
        $author = 'مهمان';
    }
    // اضافه کردن آواتار (پس از اِسکیپ در چاپ اصلی)
    return $author;
}

توضیح: این نمونه اگر نام نویسنده خالی باشد، مقدار «مهمان» را جایگزین می‌کند. توجه کنید که بهتر است HTML اضافه را اینجا نگذارید و فقط متن را تغییر دهید؛ قالب نهایی را هنگام چاپ اِسکیپ کنید.

نمونه عملی: نمایش نام به‌همراه لینک و اسکما (schema.org)

<?php
$author = get_comment_author( $comment );
$author_url = get_comment_author_url( $comment );
echo '<div itemscope itemtype="http://schema.org/Person">';
if ( $author_url ) {
    echo '<a itemprop="url" href="' . esc_url( $author_url ) . '">';
    echo '<span itemprop="name">' . esc_html( $author ) . '</span>';
    echo '</a>';
} else {
    echo '<span itemprop="name">' . esc_html( $author ) . '</span>';
}
echo '</div>';
?>

توضیح: در این مثال از microdata سکیما استفاده شده تا موتورهای جستجو شناخت بهتری از نویسنده دیدگاه داشته باشند. توجه کنید که به آدرس با esc_url و به نام با esc_html پرداخته شده است.

موارد پیشرفته و نکات اجرایی

  • برای نمایش آواتار مرتبط با نام نویسنده از get_avatar() استفاده کنید و آن را کنار get_comment_author() چاپ کنید.
  • اگر سایت شما چندزبانه است، نام نویسنده معمولاً نیاز به ترجمه ندارد ولی متن جایگزین مثل «مهمان» را حتماً با توابع i18n مانند __() قابل ترجمه کنید.
  • در صورتی که می‌خواهید نام‌های تکراری (مثلاً کاربران ثبت‌نام‌شده و نامشان) یکسان نمایش داده شوند، می‌توانید در فیلتر get_comment_author مقایسه با داده‌های کاربری انجام دهید و قالب بندی یکسان ارائه کنید.

اشتباهات رایج

  • چاپ مستقیم خروجی بدون اِسکیپ (مقاومت در برابر XSS).
  • استفاده از get_comment_author_link() در زمان‌هایی که می‌خواهید کنترل بیشتری روی HTML خروجی داشته باشید؛ در این حالت بهتر است URL را جداگانه گرفته و خودتان تگ <a> را بسازید.
  • عدم توجه به ورودی تابع (شناسه یا شیء) و فرض اینکه همیشه $comment در دسترس است.

نتیجه‌گیری

get_comment_author() تابع ساده اما پراهمیتی در وردپرس است که نام نویسنده دیدگاه را برمی‌گرداند و با ترکیب صحیحِ اِسکیپ، فیلترها و نشانه‌گذاری سِمَنتیک می‌توان تجربه کاربری، امنیت و سئوی سایت را بهبود بخشید. استفاده صحیح از این تابع در قالب‌ها و callbackها هزینهٔ خطا را کاهش داده و امکان سفارشی‌سازی حرفه‌ای را فراهم می‌آورد.

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

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