is_subpage

مرداد ۳م, ۱۳۸۹

در وب‌سایت جدیدی که در حال ساخت هستم، هر یک از محصولات یک صفحه جداگانه در وردپرس دارند. یکی از این محصولات به دلیل تغییرات ظاهری نسبت به بقیه نیاز به قالبی جداگانه داشت. بنابراین برای این صفحه یک Page Template ساختم. مشکل این‌جاست که با افزودن یک صفحه به این سری محصول باز هم نیاز به انتخاب اون قالب هنگام انتشار صفحه‌ست که، در حالتی که بخوایم خود مشتری سایت‌شو مدیریت کنه اصلاً جالب نیست.
راه حل استفاده از این تابع کوچولوئه:

function is_subpage( $iID = null )
	{
		global $post, $wpdb;

		if ( is_page() AND isset( $post->post_parent ) != 0 )
		{
			$aParent = $wpdb->get_row( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE ID = %d AND post_type = 'page' LIMIT 1", $post->post_parent ) );

			if ( is_int( $iID ) > 0 )
				if ( $aParent->ID == $iID ) return true; else return false;
			else
				if ( $aParent->ID )	return true; else return false;

		}
		else
		{
			return false;
		}
	}

این تابع ID صفحه رو به عنوان آرگومان می‌گیره و چک می‌کنه که آیا صفحه فعلی ننه باباش فلان صفحه هست یا نه.
می‌تونیم این کد رو توی page.php بذاریم و بر اون اساس تغییرات مورد نیازمون رو توی قالب ایجاد کنیم.
نمونه استفاده:

if ( is_subpage( 8 ) )
{
  //do something
};

این تابع رو از وب‌سایت WP Recipes گرفتم.

پانویس: از کاربران سیاره وردپرس فارسی پیشاپیش معذرت می‌خوام. فکر می‌کنم با انتشار این پست تمام نوشته‌های شاخه وردپرس‌ام دوباره منتشر بشند.

نظر بدهید