ویژگی تصویر

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

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

تابع 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)، مدیریت حالت‌های خالی و بهینه‌سازی در فراخوانی‌ها، این تابع یکی از ابزارهای اصلی توسعه‌دهندگان قالب و افزونه در وردپرس خواهد بود.

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

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