ویژگی تصویر

معرفی و مرور کلی روی تابع get_bloginfo() در وردپرس

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

تابع get_bloginfo() یکی از توابع پایه‌ای وردپرس است که اطلاعات متا دربارهٔ سایت را برمی‌گرداند. این تابع در قالب‌ها، پلاگین‌ها و فایل‌های تم برای دسترسی به نام سایت، توضیحات، URLها، زبان، نسخه وردپرس و موارد مشابه بسیار مفید است. در این مقاله به صورت کاربردی و با مثال‌های واقعی نحوهٔ استفاده، پارامترها، تفاوت با تابع bloginfo() و بهترین شیوه‌های امنیتی را بررسی می‌کنیم.

سینتکس و نحوهٔ فراخوانی

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

<?php echo get_bloginfo( $show, $filter ); ?>

پارامتر $show مشخص می‌کند چه اطلاعاتی خواسته شده و $filter (اختیاری) می‌تواند برای فیلتر خروجی استفاده شود (مثل ‘raw’، ‘display’ و…). تابع مقدار را برمی‌گرداند و برخلاف bloginfo() آن را چاپ نمی‌کند.

مثال ساده

<?php
// نمایش امن نام سایت
echo esc_html( get_bloginfo( 'name' ) );
?>

در این مثال نام سایت گرفته شده و با esc_html() ایمن‌سازی می‌شود تا کاراکترهای خطرناک HTML به طور ایمن نمایش یابند. استفاده از تابع بازگرداننده به شما کنترل بیشتری برای پردازش خروجی می‌دهد.

پارامترها و مقادیر قابل استفاده

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

کلیدتوضیح
nameنام سایت (Blog Title)
descriptionتوضیحات کوتاه سایت (Tagline)
wpurlآدرس نصب وردپرس (WP Address)
url (یا home)آدرس صفحه اصلی سایت (Site Address)
admin_emailایمیل مدیر سایت
charsetرمزگذاری (مثلاً UTF-8)
versionنسخه وردپرس
languageزبان سایت (مثلاً fa-IR)
stylesheet_urlآدرس فایل style.css قالب فعال
template_directoryآدرس دایرکتوری قالب والد
text_directionجهت متن (‘ltr’ یا ‘rtl’)
atom_url, rss2_url, comments_rss2_url, pingback_urlآدرس‌های مرتبط با فیدها و پیگ‌بک

تفاوت get_bloginfo() و bloginfo()

نکتهٔ مهم: bloginfo() خروجی را مستقیم چاپ (echo) می‌کند، اما get_bloginfo() مقدار را برمی‌گرداند. چاپ تابعی که خودش echo می‌کند اگر دوباره با echo فراخوانی شود می‌تواند منجر به نمایش عدد 1 یا خروجی ناخواسته شود. بنابراین برای کنترل و ایمن‌سازی خروجی معمولاً از get_bloginfo() همراه با توابع escaping استفاده می‌شود.

<?php
// اشتباه: چاپ مقدار bloginfo باعث نشان دادن "1" می‌شود
echo bloginfo( 'name' ); // نکنید

// درست:
bloginfo( 'name' ); // اگر صرفاً چاپ می‌کنید
// یا (ترجیحی برای ایمن‌سازی)
echo esc_html( get_bloginfo( 'name' ) );
?>

در کد بالا، توضیح اینکه چرا نباید echo bloginfo() را استفاده کرد نشان داده شده و روش مناسب با get_bloginfo() و esc_html() پیشنهاد شده است.

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

قرار دادن متا تگ توضیحات

<meta name="description" content="<?php echo esc_attr( get_bloginfo( 'description' ) ); ?>" />

این کد توضیحات سایت (tagline) را به عنوان محتوای متا تگ قرار می‌دهد. از esc_attr() برای ایمن‌سازی مقدار درون attribute استفاده شده است.

استفاده برای لینک یا بارگذاری منابع

<link rel="stylesheet" href="<?php echo esc_url( get_bloginfo( 'stylesheet_url' ) ); ?>" />
<img src="<?php echo esc_url( get_bloginfo( 'template_directory' ) . '/screenshot.png' ); ?>" alt="screenshot" />

مثال بالا آدرس استایل قالب را می‌گیرد و تصویری در دایرکتوری قالب والد را بارگذاری می‌کند. البته توصیه می‌شود از توابع مدرن‌تر مثل get_stylesheet_directory_uri() یا get_template_directory_uri() استفاده کنید که خوانایی و سازگاری بیشتری دارند.

نسخهٔ بهبودیافته (توصیهٔ امنیتی و مدرن)

<link rel="stylesheet" href="<?php echo esc_url( get_stylesheet_directory_uri() . '/style.css' ); ?>" />

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

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

  • همیشه خروجی را با توابع escaping مناسب ایمن کنید: esc_html(), esc_attr(), esc_url().
  • برای دریافت URLها از توابع اختصاصی‌تر مانند get_stylesheet_directory_uri() و get_template_directory_uri() استفاده کنید تا ریسک اشتباه کاهش یابد.
  • اگر می‌خواهید مقدار خام بدون فیلترها بگیرید، پارامتر دوم را برابر ‘raw’ قرار دهید، اما این کار را تنها در صورتی انجام دهید که کاملاً از محتوای دریافتی آگاه هستید.
  • درون پلاگین‌ها هنگام اجرا در محیط ادمین یا کران جاب‌ها به تفاوت context توجه کنید؛ برخی مقادیر ممکن است در requestهای خاص متفاوت باشند.

خطاهای رایج و راه‌حل‌ها

  • استفاده از echo bloginfo() به جای bloginfo() یا echo get_bloginfo() — راه‌حل: از یکی از دو روش صحیح استفاده کنید و اضافه‌کاری نکنید.
  • انتظار آرایه یا آبجکت از تابعی که رشته برمی‌گرداند — راه‌حل: بررسی داکیومنتیشن و استفاده از توابع مناسب برای دادهٔ موردنظر.
  • عدم ایمن‌سازی خروجی قبل از قرار دادن در تگ‌های HTML — راه‌حل: استفاده از توابع esc_* براساس نوع خروجی.

جمع‌بندی

تابع get_bloginfo() ابزاری ساده اما قدرتمند برای خواندن اطلاعات پایه‌ای سایت در وردپرس است. با دانستن مقادیر قابل استفاده، تفاوت آن با bloginfo() و رعایت نکات امنیتی و استفاده از توابع مدرن‌تر، می‌توانید خروجی‌های قابل اطمینان و مناسب برای قالب‌ها و پلاگین‌ها تولید کنید. همیشه خروجی‌ها را ایمن‌سازی کنید و برای URLها از توابع مخصوص مسیر و URI بهره ببرید تا انعطاف‌پذیری و سازگاری کد افزایش یابد.

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

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