تابع get_bloginfo در وردپرس
تابع 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 بهره ببرید تا انعطافپذیری و سازگاری کد افزایش یابد.
آیا این مطلب برای شما مفید بود ؟




