ویژگی تصویر

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

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

تابع is_page() یکی از conditional tag های مهم وردپرس است که مشخص می‌کند صفحهٔ جاری (page) با شرایط مشخص شده مطابقت دارد یا خیر. این تابع بسیار کاربردی است برای اجرای کدها تنها در صفحات مشخص، بارگذاری اسکریپت‌ها و استایل‌ها به‌صورت هدفمند، یا تغییر رفتار قالب بر اساس صفحهٔ مورد نظر.

خلاصهٔ کاربرد و مقدار بازگشتی

  • کاربرد: تشخیص اینکه صفحهٔ فعلی از نوع Page است و آیا شناسه، اسلاگ یا عنوان مورد نظر را دارد.
  • مقدار بازگشتی: بولی — true یا false.
  • محل استفادهٔ مناسب: در فایل‌های قالب (مثل header.php, page.php) یا در هوک‌هایی که بعد از ساخته شدن query اجرا می‌شوند (مثل wp, template_redirect, wp_enqueue_scripts).

امضای تابع و پارامترها

پارامترنوعتوضیح
$pageint|string|array (اختیاری)می‌تواند ID صفحه، slug، title یا آرایه‌ای از این‌ها باشد. اگر خالی باشد، فقط بررسی می‌کند آیتم جاری یک Page است یا نه.
بازگشتbooltrue یا false

مثال‌های رایج

1) بررسی سادهٔ اینکه آیا صفحه است

if ( is_page() ) {
    // نمایش محتوا یا اجرای کد تنها برای صفحات (page)
}

توضیح: این کد بررسی می‌کند آیا کوئری جاری مربوط به یک صفحهٔ وردپرس (post type = page) است. اگر بله، بلوک داخلی اجرا می‌شود. مناسب زمانی است که بخواهید تغییرات کلی فقط برای انواع صفحه اعمال شود.

2) بررسی براساس آی‌دی، اسلاگ یا عنوان

if ( is_page(42) ) { // بر اساس ID
    // کد برای صفحه با ID = 42
}

if ( is_page('about-us') ) { // بر اساس slug
    // کد برای صفحه با slug = about-us
}

if ( is_page('تماس با ما') ) { // بر اساس عنوان (title)
    // کد برای صفحه‌ای که عنوانش "تماس با ما" است
}

توضیح: تابع می‌تواند پارامترهای مختلفی بپذیرد ولی ترجیحاً استفاده از ID سریع‌تر و ایمن‌تر است. استفاده از عنوان ممکن است در صورتی که عنوان تکراری باشد، دقیق نباشد.

3) بررسی چند صفحه همزمان (آرایه)

if ( is_page( array( 42, 'about-us', 'تماس با ما' ) ) ) {
    // اگر هر یک از شرایط برقرار باشد این کد اجرا می‌شود
}

توضیح: ارسال آرایه برای بررسی چند صفحه در یک شرط مناسب است و از نوشتن چندین شرط جداگانه جلوگیری می‌کند.

4) بارگذاری اسکریپت/استایل تنها در یک صفحه

function mytheme_enqueue_scripts() {
    if ( is_page( 'contact' ) ) {
        wp_enqueue_script( 'contact-form', get_template_directory_uri() . '/js/contact.js', array('jquery'), '1.0', true );
    }
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_scripts' );

توضیح: این الگو شایع است — اسکریپت‌ها یا استایل‌های مربوط به صفحه‌های خاص را تنها در آن صفحات بارگذاری کنید تا کارایی صفحه‌ها و سرعت بارگذاری بهبود یابد. مهم است که این کد در هوکی اجرا شود که query آماده باشد، مثل wp_enqueue_scripts یا wp.

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

  • از is_page() در هوک init به‌طور معمول استفاده نکنید، چون query هنوز ساخته نشده و نتیجهٔ تابع قابل اتکا نیست. به جای آن از هوک‌هایی مثل wp, template_redirect یا wp_enqueue_scripts استفاده کنید.
  • استفاده از ID سریع‌تر از اسلاگ یا عنوان است و در شرایطی که دقت مهم است توصیه می‌شود.
  • برای چک کردن قالب صفحه از is_page_template() استفاده کنید، نه is_page().
  • در بخش مدیریت (admin) معمولاً is_page() خروجی مورد انتظار را نمی‌دهد؛ برای کار با صفحه‌ها در بخش ادمین باید از متدها و توابع مربوط به post object استفاده کنید.

مثال اشتباه و اصلاح آن

// اشتباه: استفاده در init که ممکن است جواب ندهد
add_action('init', function() {
    if ( is_page('about-us') ) {
        // احتمالا false خواهد بود، چون query هنوز ساخته نشده
    }
});

توضیح: چون در هوک init کوئری اصلی بارگذاری نشده، is_page معمولاً مقدار false برمی‌گرداند.

// اصلاح: استفاده در هوکی که بعد از ساخت کوئری اجرا می‌شود
add_action('wp', function() {
    if ( is_page('about-us') ) {
        // الان امن و قابل اعتماد است
    }
});

توضیح: هوک wp بعد از پردازش کوئری اجرا می‌شود و is_page به درستی کار خواهد کرد.

مقایسه با توابع مشابه

  • is_single(): برای پست‌های از نوع post استفاده می‌شود، نه page.
  • is_singular(): برای هر نوع پست تکی (شامل page, post و custom post type) استفاده می‌شود. اگر می‌خواهید فقط صفحات را هدف بگیرید، is_page منطقی‌تر است.
  • is_page_template(): بررسی می‌کند که آیا از یک قالب صفحهٔ خاص استفاده می‌شود یا خیر؛ مکمل is_page است اما کاربرد متفاوت دارد.

استفادهٔ پیشرفته: ترکیب با get_queried_object_id()

$current_id = get_queried_object_id();
if ( $current_id === 42 ) {
    // کاری بر اساس ID صفحه جاری
}

توضیح: گاهی نیاز است ID صفحه را مستقیم به‌دست بیاورید؛ get_queried_object_id() در این موارد کمک می‌کند. ترکیب آن با is_page می‌تواند منطقی و خوانا باشد.

جمع‌بندی و توصیه‌های عملی

  • برای اعمال تغییرات یا بارگذاری منابع در صفحات مشخص، از is_page استفاده کنید تا سرعت و بهینگی افزایش یابد.
  • همیشه در هوکی استفاده کنید که کوئری ساخته شده باشد؛ wp و wp_enqueue_scripts گزینه‌های خوب هستند.
  • برای عملکرد بهتر از ID استفاده کنید و فقط در صورت نیاز از عنوان یا slug بهره ببرید.
  • در مواقع نیاز به چک کردن قالب صفحه یا نوع محتوا، توابع مرتبط را بشناسید و از is_page به درستی جدا کنید.

با رعایت نکات بالا، تابع is_page() می‌تواند ابزار قدرتمندی برای کنترل دقیق رفتار قالب و بهینه‌سازی منابع در پروژه‌های وردپرس باشد.

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

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