ویژگی تصویر

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

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

تابع get_the_author() یکی از توابع قالبی (template tag) وردپرس است که برای دریافت نام نویسنده پست جاری استفاده می‌شود. این تابع معمولاً در داخل حلقه وردپرس (The Loop) به کار می‌رود و نام نمایش داده‌شدهٔ نویسنده را برمی‌گرداند، بدون این‌که مستقیماً آن را چاپ کند. در این مطلب به صورت دقیق، کاربردها، محدودیت‌ها و بهترین روش‌های استفاده از این تابع همراه با مثال‌های عملی بررسی می‌کنیم.

چگونه get_the_author() کار می‌کند؟

درون حلقهٔ وردپرس، وردپرس یک آبجکت $authordata آماده می‌کند که اطلاعات نویسندهٔ پست جاری را در خود دارد. get_the_author() از این آبجکت استفاده کرده و مقدار فیلد display_name را برمی‌گرداند. توجه کنید که این تابع فقط مقدار را بازمی‌گرداند؛ اگر بخواهید نام را چاپ کنید، باید از echo یا تابع the_author() استفاده کنید.

مثال پایه — داخل حلقه

<?php
if ( have_posts() ) {
  while ( have_posts() ) {
    the_post();
    $author_name = get_the_author();
    echo '<p>نویسنده: '.esc_html( $author_name ).'</p>';
  }
}
?>

در این مثال، ابتدا حلقهٔ وردپرس اجرا شده و سپس نام نویسنده با get_the_author() گرفته و با esc_html() ایمن‌سازی شده و چاپ می‌شود. دلیل استفاده از esc_html() جلوگیری از آسیب‌پذیری‌های XSS است.

محدودیت‌ها و وضعیت خارج از حلقه

تابع get_the_author() برای زمانی طراحی شده که در داخل حلقه قرار دارید. اگر خارج از حلقه فراخوانی شود، ممکن است مقدار صحیحی برنگرداند زیرا $authordata مقداردهی نشده است. برای دریافت نام نویسنده خارج از حلقه، بهتر است از get_the_author_meta() یا توابع مرتبط با پست استفاده کنید.

مثال — خارج از حلقه با شناسه پست

<?php
$post_id = 42; // شناسهٔ نمونه
$author_id = get_post_field( 'post_author', $post_id );
$author_name = get_the_author_meta( 'display_name', $author_id );
echo '<p>نویسنده پست #'.$post_id.': '.esc_html( $author_name ).'</p>';
?>

در این کد ابتدا آی‌دی نویسنده با get_post_field گرفته می‌شود و سپس از get_the_author_meta برای دریافت فیلد display_name استفاده می‌کنیم. این روش خارج از حلقه قابل اطمینان‌تر است.

ترکیب با لینک آرشیو نویسنده

اغلب می‌خواهیم نام نویسنده به صفحهٔ آرشیو نویسنده لینک شود. برای این کار از get_author_posts_url() همراه با شناسهٔ نویسنده استفاده می‌کنیم.

<?php
if ( have_posts() ) {
  while ( have_posts() ) {
    the_post();
    $author_id = get_the_author_meta( 'ID' );
    $author_url = get_author_posts_url( $author_id );
    printf(
      '<p>نویسنده: <a href="%s">%s</a></p>',
      esc_url( $author_url ),
      esc_html( get_the_author() )
    );
  }
}
?>

این قطعه کد نام نویسنده را به صفحهٔ آرشیو نویسنده لینک می‌کند. توجه داشته باشید که برای ایمن‌سازی از esc_url و esc_html استفاده شده است.

مقایسه get_the_author(), the_author() و get_the_author_meta()

تابعکاربردداخل/خارج حلقه
get_the_author()بازگرداندن نام نمایشی نویسندهبه‌طور معمول داخل حلقه
the_author()چاپ مستقیم نام نویسنده (echo)داخل حلقه
get_the_author_meta()دریافت هر متای نویسنده (مثل email، ID، nickname)قابل استفاده داخل و خارج حلقه با مشخص کردن شناسه

بهینه‌سازی و نکات فنی

  • ایمن‌سازی خروجی: همیشه خروجی نام نویسنده را با توابعی مثل esc_html() یا esc_attr() ایمن کنید.
  • اجتناب از فراخوانی‌های تکراری: اگر در یک حلقه چندین بار به اطلاعات نویسنده نیاز دارید، یک بار آی‌دی نویسنده را بخوانید و در یک متغیر ذخیره کنید تا از درخواست‌های دیتابیس اضافی جلوگیری شود.
  • سازگاری با ترجمه: اگر متن حول نام نویسنده دارید (مثلاً “نویسنده:”), از توابع ترجمه‌پذیر مانند __() یا _e() استفاده کنید تا قالب شما بین‌المللی شود.
  • امنیت: هرگاه نام نویسنده از منابع خارجی یا متای دل‌خواه خوانده می‌شود، آن را اعتبارسنجی کنید.

مثال پیشرفته — استفاده از WP_User برای کاهش فراخوانی‌ها

<?php
$post_id = get_the_ID();
$author_id = get_post_field( 'post_author', $post_id );

// گرفتن شیء WP_User به‌جای چندین فراخوانی متا
$author = get_userdata( $author_id );

if ( $author ) {
  $display_name = $author->display_name;
  $author_url = get_author_posts_url( $author_id );
  echo '<p>نویسنده: <a href="'.esc_url( $author_url ).'">'.esc_html( $display_name ).'</a></p>';
}
?>

در این مثال از get_userdata() استفاده شده تا یک شیء کامل WP_User گرفته شود. این شیء شامل تمام اطلاعات کاربر است و در مواقعی که نیاز به چندین فیلد داریم، کارایی بیشتری دارد و از چندین فراخوانی متا جلوگیری می‌کند.

کاربردهای متداول در قالب‌ها و افزونه‌ها

  • نمایش کارت نویسنده در پایین پست (author box)
  • ساختن فهرست نویسندگان محبوب یا پربازدید با ترکیب آمار پست‌ها
  • ساخت شورت‌کد یا ویجت که اطلاعات نویسنده را در بخش‌های مختلف سایت نمایش می‌دهد
  • استفاده در فیدها یا متادیتای ساخت‌یافته برای بهبود سئو

جمع‌بندی و نکات پایانی

تابع get_the_author() تابع ساده اما کاربردی برای دریافت نام نویسنده در قالب‌های وردپرس است. برای استفادهٔ صحیح، باید محدودهٔ اجرای تابع (داخل یا خارج حلقه) را در نظر گرفت و در صورت نیاز به فیلدهای بیشتر از get_the_author_meta() یا get_userdata() بهره برد. همواره خروجی‌ها را ایمن کنید و در طراحی قالب یا افزونه به بهینگی و جلوگیری از درخواست‌های اضافی دیتابیس توجه داشته باشید.

اگر قصد دارید نمایش نویسنده را گسترش دهید (مثل افزودن تصویر آواتار، شبکه‌های اجتماعی یا بیوگرافی)، بهتر است از ترکیب get_avatar()، get_the_author_meta() و کشینگ مناسب استفاده کنید تا عملکرد سایت حفظ شود.

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

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