تابع get_the_title در وردپرس
تابع get_the_title() یکی از توابع پایهای وردپرس برای بازیابی عنوان یک نوشته، برگه یا هر نوع پست سفارشی است. این تابع عنوان را بهصورت رشته بازمیگرداند و برخلاف the_title() که مستقیماً عنوان را چاپ میکند، مناسب زمانی است که بخواهید عنوان را پردازش، ذخیره یا در متغیری قرار دهید. در این مقاله کاربردها، نکات امنیتی، مثالهای واقعی و بهترین شیوهها را با زبان ساده و مفصل توضیح میدهم.
تفاوت get_the_title() و the_title()
- get_the_title(): عنوان را برمیگرداند (return) — مناسب برای پردازش و اختصاص به متغیر.
- the_title(): عنوان را چاپ میکند (echo) — مناسب برای نمایش ساده داخل لوپ.
امضا و پارامترها
تابع به شکل زیر فراخوانی میشود:
get_the_title( int|WP_Post|null $post = null ) : stringپارامتر $post میتواند شناسه پست (ID)، آبجکت WP_Post یا مقدار null برای استفاده از پست جاری (global $post) باشد.
مثالهای پایه
// داخل لوپ
$title = get_the_title();
echo esc_html( $title );
// خارج از لوپ با شناسه پست
$title = get_the_title( 42 );
echo esc_html( $title );در مثال اول عنوان پست جاری گرفته میشود. در مثال دوم با ارسال شناسه 42 عنوان پستی مشخص گرفته میشود. توجه کنید که برای نمایش به صورت امن از esc_html() استفاده شده است.
چرا باید خروجی را Escaping کرد؟
get_the_title() مقدار عنوان را بعد از اعمال فیلتر ‘the_title’ برمیگرداند اما آن را برای خروجی امن نمیکند. برای جلوگیری از XSS و نمایش صحیح کاراکترها همیشه در زمان چاپ از توابعی مثل esc_html()، esc_attr() یا wp_kses() استفاده کنید.
// مناسب برای قرار دادن در متن HTML
echo esc_html( get_the_title() );
// مناسب برای استفاده در خاصیت HTML مانند title یا value
echo esc_attr( get_the_title( $post_id ) );در این کدها esc_html() و esc_attr() مسئول تبدیل کاراکترهای حساس به نمایش امن هستند.
کاربردهای پیشرفته و نکات تخصصی
- فیلتر ‘the_title’: میتوانید با این فیلتر همه عناوین را دستکاری کنید (مثلاً افزودن برچسب یا ترجمه پویا).
- وقتی عنوان خالی است: برای پستهایی که عنوان ندارند بهتر است یک مقدار جایگزین استفاده کنید (مثلاً شماره پست یا slug).
- عملکرد: get_the_title() از get_post() استفاده میکند؛ اگر تعداد زیادی فراخوانی دارید، بهتر است از WP_Query با cache مناسب یا پیشبارگذاری دادهها استفاده کنید.
- ترجمه و چندزبانه: برای سایتهای چندزبانه مطمئن شوید که فیلترهای افزونههای چندزبانه با ‘the_title’ سازگارند.
مثال: مقدار جایگزین زمانی که عنوان خالی است
$title = get_the_title( $post_id );
if ( empty( trim( $title ) ) ) {
$post = get_post( $post_id );
$title = sprintf( 'پست شماره %d', $post_id );
}
echo esc_html( $title );در صورت خالی بودن عنوان، این کد یک عنوان جایگزین با شماره پست ست میکند. ابتدا مقدار را trim میکند تا فضاهای سفید نیز در نظر گرفته شوند.
مثال: استفاده در شورتکد
function my_title_shortcode( $atts ) {
$atts = shortcode_atts( [ 'id' => 0 ], $atts, 'my_title' );
$id = intval( $atts['id'] );
if ( ! $id ) {
return '';
}
return esc_html( get_the_title( $id ) );
}
add_shortcode( 'my_title', 'my_title_shortcode' );این شورتکد با نام [my_title id=”42″] عنوان پست مشخص را برمیگرداند. خروجی با esc_html ایمن شده است.
مثال: استفاده در متا تگها (SEO)
add_filter( 'pre_get_document_title', function( $title ) {
if ( is_singular() ) {
$post_id = get_queried_object_id();
return wp_strip_all_tags( get_the_title( $post_id ) );
}
return $title;
});این فیلتر عنوان سند HTML را برای صفحات تکی (single) با عنوان پست مقداردهی میکند. wp_strip_all_tags() برای حذف تگهای HTML احتمالی و تولید عنوان ساده مناسب است.
جدول مقایسهای سریع
| عمل | تابع |
|---|---|
| گرفتن عنوان برای پردازش | get_the_title() |
| نمایش مستقیم عنوان داخل قالب | the_title() |
| فراخوانی عنوان خام از فیلد پایگاهداده | get_post_field(‘post_title’, $id) |
نکات امنیتی و بهینهسازی
- همیشه خروجی را در زمان چاپ Escaping کنید (esc_html، esc_attr، یا wp_kses در صورت نیاز به HTML مجاز).
- برای اجرای تغییرات سراسری از فیلتر ‘the_title’ استفاده کنید و در callback خود به شرایط اجرا دقت کنید تا مشکلات SEO یا نمایش پیش نیاید.
- در حلقههای بزرگ از امکانات Cache و WP_Query مناسب استفاده کنید تا از کوئریهای اضافی جلوگیری شود.
خلاصه
get_the_title() تابعی ساده ولی بسیار کاربردی است که برای گرفتن عنوان پست به صورت قابل پردازش استفاده میشود. با رعایت نکات امنیتی (Escaping)، مدیریت حالتهای خالی و بهینهسازی در فراخوانیها، این تابع یکی از ابزارهای اصلی توسعهدهندگان قالب و افزونه در وردپرس خواهد بود.
آیا این مطلب برای شما مفید بود ؟




