تابع wp_get_theme در وردپرس
تابع wp_get_theme() یکی از ابزارهای مهم در توسعه قالبها و افزونههای وردپرس است که اطلاعات کامل درباره یک قالب (theme) را به صورت یک شیء WP_Theme برمیگرداند. در این مقاله به صورت جامع روش استفاده، مثالهای عملی، نکات امنیتی و بهترین شیوهها را بررسی میکنیم.
چرا wp_get_theme() مهم است؟
این تابع به شما اجازه میدهد تا اطلاعاتی مثل نام قالب، ورژن، نویسنده، مسیر فایلها و اینکه قالب جاری فرزند (child) است یا خیر را دریافت کنید. چنین اطلاعاتی برای نمایش در پنل مدیریت، بارگذاری فایلها، بررسی سازگاری و دیاگنوز مشکلها بسیار مفید است.
نحوۀ فراخوانی و مقدار بازگشتی
نحوۀ پایهای فراخوانی تابع به صورت زیر است:
$theme = wp_get_theme();
این کد یک شیء از کلاس WP_Theme بازمیگرداند که متدهایی برای دسترسی به اطلاعات قالب دارد.
متدهای کاربردی WP_Theme
| متد / مشخصه | توضیح کوتاه |
|---|---|
| get(‘Name’) | نام قالب |
| get(‘Version’) | نسخه قالب |
| get_stylesheet() | نام stylesheet (برای child theme متفاوت است) |
| get_template() | نام قالب والد |
| get_stylesheet_directory() | مسیر فیزیکی دایرکتوری stylesheet |
| get_template_directory() | مسیر دایرکتوری قالب والد |
| is_child() | تشخیص اینکه قالب فعلی child theme است یا خیر |
مثال ساده: نمایش نام و ورژن قالب
$theme = wp_get_theme();
echo 'Theme: ' . $theme->get('Name') . ' v' . $theme->get('Version');
توضیح: کد بالا شیء قالب را گرفته و نام و ورژن آن را چاپ میکند. برای خروجی امن در فرانتاند یا بکاند بهتر است از توابع escaping مثل esc_html() استفاده کنید تا از مشکلات XSS جلوگیری شود.
بهبود کد با استفاده از escaping
$theme = wp_get_theme();
printf(
'%s v%s',
esc_html( $theme->get('Name') ),
esc_html( $theme->get('Version') )
);
توضیح: این نسخه امنتر است زیرا مقادیر ورودی به خروجی HTML با esc_html() تصفیه میشوند. همچنین از printf برای قالببندی بهتر استفاده شده است.
استفادهها و موارد کاربرد
- نمایش اطلاعات قالب در صفحه تنظیمات یا فوتر برای توسعهدهندگان.
- شرطیسازی بارگذاری استایل یا اسکریپت بر اساس ورژن قالب برای cache-busting.
- چک کردن اینکه آیا قالب یک child theme است و در صورت نیاز مسیر والد را بارگذاری کردن.
- بررسی سازگاری قالب با نسخههای مختلف افزونهها یا وردپرس با مقایسه شماره نسخه.
مثال عملی: بارگذاری استایل فرزند یا والد
function mytheme_enqueue_styles() {
$theme = wp_get_theme();
if ( $theme->is_child() ) {
// اگر child theme باشد، ابتدا سبک والد را بگیریم
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
wp_enqueue_style( 'child-style', get_stylesheet_uri(), array('parent-style'), $theme->get('Version') );
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_styles' );
توضیح: این تابع هنگام بارگذاری اسکریپتها و استایلها اجرا میشود. اگر قالب یک child باشد ابتدا استایل قالب والد را enqueue میکند سپس استایل جاری با dependency روی والد و استفاده از ورژن قالب برای cache-busting بارگذاری میشود.
نکات امنیتی و عملکردی
- از فراخوانی مکرر
wp_get_theme()در حلقههای سنگین خودداری کنید؛ بهتر است یکبار شیء را ذخیره (caching) کنید. - هر زمان که دادهای از شیء قالب را به خروجی HTML میبرید، از توابع escaping استفاده کنید (مثل
esc_html,esc_attr,esc_url). - برای اهداف داخلی (مثلاً منطق شرطی) نیازی به escaping نیست، اما هنگام نمایش حتماً عمل کنید.
موارد متداول و رفع خطا
- اگر اطلاعاتی که انتظار دارید بازنمیگردد، مطمئن شوید که نام فیلد در header فایل style.css قالب درست نوشته شده باشد (مثل Theme Name, Version, Author).
- برای دریافت اطلاعات قالبهای دیگر میتوانید نام stylesheet یا مسیر root را به
wp_get_theme( $stylesheet, $theme_root )بدهید. - در محیطهای چندسایتی (Multisite) مسیرها و root ممکن است متفاوت باشند، لذا پارامتر دوم مفید است.
نمونه: گرفتن اطلاعات قالب مشخص
$other_theme = wp_get_theme( 'twentytwentyone' );
// یا اگر پوشه قالب در راه دیگری است:
// $other_theme = wp_get_theme( 'twentytwentyone', '/path/to/themes' );
echo $other_theme->get('Name');
توضیح: میتوانید به جای قالب جاری، قالب مشخصی را از طریق نام stylesheet (مثلاً slug قالب) یا مسیر root دریافت کنید. این برای افزونههایی که اطلاعات چند قالب را مقایسه یا لیست میکنند مفید است.
جمعبندی و بهترین شیوهها
- از
wp_get_theme()برای دسترسی امن و استاندارد به متادیتای قالب استفاده کنید. - همیشه خروجیها را escape کنید و از بارگذاری غیرضروری آن در حلقهها خودداری کنید.
- برای چک کردن child/parent، ورژن و مسیرها این تابع و متدهای
WP_Themeسریع و قابل اعتماد هستند.
با درک و استفاده صحیح از wp_get_theme() میتوانید قابلیتهای مدیریتی و تطبیقپذیری قالب خود را بهصورت حرفهایتر پیادهسازی کنید.
آیا این مطلب برای شما مفید بود ؟




