- مقدمه ای بر افزونه نویسی
- افزونه وردپرس چیست ؟
- افزونه ها چگونه با وردپرس تعامل دارند ؟
- چه زمانی افزونه ها بارگذاری می شوند ؟
- منابع معتبر دریافت افزونه
- معرفی چند افزونه محبوب وردپرس
- بررسی برچسب های افزونه وردپرس
- مزایای افزونه های وردپرس
- جداسازی افزونه ها و پوسته ها
- اشتراک گذاری و استفاده مجدد آسان افزونه های وردپرس
- بروزرسانی های آسان افزونه های وردپرس
- مدیریت افزونه های وردپرس
- ویرایش افزونه های وردپرس
- دایرکتوری افزونه های در وردپرس
- وضعیت های مختلف افزونه های وردپرس
- تست عملکرد افزونه های وردپرس
- پایه و اساس افزونه
- لزوم نامگذاری مناسب افزونه وردپرس
- اهمیت پوشه بندی افزونه های وردپرس
- اهمیت پیشوندگذاری در افزونه های وردپرس
- سازماندهی فایل های افزونه وردپرس
- ساختار استاندارد پوشه های افزونه وردپرس
- الزامات بخش هدر افزونه وردپرس
- لایسنس یا مجوز افزونه وردپرس
- تعیین مسیرها در توسعه افزونه وردپرس
- تعیین مسیر به صورت محلی در افزونه وردپرس
- تعیین مسیر URL ها در توسعه افزونه وردپرس
- تابع فعال سازی افزونه وردپرس
- ایجاد تنظیمات پیش فرض هنگام فعال سازی افزونه وردپرس
- تابع غیرفعال سازی افزونه وردپرس
- تفاوت غیرفعال کردن و حذف کردن افزونه وردپرس
- حذف افزونه وردپرس
- حذف افزونه وردپرس توسط فایل Uninstall.php
- حذف افزونه وردپرس توسط قلاب Uninstall
- اهمیت مستندسازی کدهای افزونه وردپرس
- نامگذاری متغیرها ، توابع و فایل ها در افزونه وردپرس
- کنترل رشته ها در افزونه با علامت های نقل قول تکی و جفت
- دندانه گذاری یا تورفتگی کدها در افزونه وردپرس
- استایل دهی کدهای افزونه با آکولاد
- استفاده از فاصله در کدنویسی افزونه
- استفاده از تگ کوتاه PHP در افزونه نویسی
- دستورات SQL در افزونه نویسی وردپرس
- چک لیست توسعه افزونه وردپرس
- آشنایی با قلاب های وردپرس
- آشنایی با قلاب های اکشن در وردپرس
- آشنایی کامل با اکشن وردپرس
- توابع قلاب اکشن وردپرس
- تابع remove_action وردپرس
- تابع remove_all_actions وردپرس
- تابع has_action وردپرس
- تابع did_action ورپرس
- plugins_loaded ؛ قلاب اکشن کاربردی وردپرس
- Init ؛ قلاب اکشن کاربردی وردپرس
- Admin_menu ؛ قلاب اکشن کاربردی وردپرس
- template_redirect ؛ قلاب اکشن کاربردی وردپرس
- wp_head ؛ قلاب اکشن کاربردی وردپرس
- آشنایی با قلاب های فیلتر – Filter Hooks در وردپرس
- تابع apply_filters_ref_array وردپرس
- تابع remove_filter وردپرس
- تابع remove_all_filters وردپرس
- تابع has_filter وردپرس
- تابع current_filter وردپرس
- توابع بازگشت سریع وردپرس
- قلاب فیلتر the_content وردپرس
- قلاب فیلتر the_title وردپرس
- قلاب فیلتر comment_text وردپرس
- قلاب فیلتر template_include وردپرس
- استفاده از قلاب ها در داخل یک کلاس
- ایجاد قلاب های سفارشی در وردپرس
- مزایای ایجاد قلاب های سفارشی
- چگونه قلاب های وردپرس را پیدا کنیم ؟
- قلاب های متغیر وردپرس
- لیست مرجع قلاب های وردپرس
- ادغام افزونه با وردپرس
- ایجاد یک منوی سطح بالا در وردپرس
- افزودن یک زیرمنو به وردپرس
- افزودن یک زیرمنو به منوهای موجود وردپرس
- ایجاد ابزارک با کدنویسی در وردپرس
- ایجاد یک ابزارک حرفه ای در وردپرس
- ایجاد ابزارک های داشبورد وردپرس
- ایجاد ابزارک داشبورد قابل تنظیم در وردپرس
- ایجاد متاباکس (Meta Box) در وردپرس
- ذخیره کردن داده های متاباکس در وردپرس
- ایجاد متاباکس پیشرفته در وردپرس
- ایجاد یک افزونه پایدار و با ثبات
قبل از بررسی قلاب فیلتر template_include لازم است توضیح کوتاهی در مورد نحوه نمایش بخش های مختلف در وردپرس را مشاهده کنید . به خاطر اینکه تنها هدف این توضیح درک بهتر ساختار فایل های تمپلیت وردپرس است ، از وارد شدن به جزئیات پرهیز می کنیم .
برای ایجاد یک پوسته وردپرس که وظیفه نمایش بخش های مختلف به کاربران ( و البته ربات ها ) را دارد ، دو فایل الزامی هستند . فایل index.php و فایل style.css .
در وردپرس به دلایلی مانند استفاده مجدد از فایل ها و سفارشی سازی بهتر برای هر بخش یک فایل یا تمپلیت در نظر گرفته شده است .
به عنوان مثال برای نمایش نوشته پیش فرض وردپرس از فایلی به نام single.php در پوسته ها استفاده می شود . چنانچه این فایل در پوشه پوسته وردپرس وجود نداشته باشد ، وردپرس به عنوان جایگزین از فایل index.php برای نمایش نوشته استفاده خواهد کرد .
پس به خاطر داشته باشید که وردپرس برای هر بخش ابتدا به دنبال فایل مربوط به آن بخش می گردد و چنانچه آن را پیدا نکند به دنبال فایل جایگزین آن جستجو خواهد کرد .
در تصویر زیر می توانید ساختاری که وردپرس بر اساس آن بخش های مختلف را نمایش می دهد را مشاهده کنید .
برای مشاهده یا دانلود تصویر ساختار فایل های پوسته وردپرس کلیک کنید .
قلاب فیلتر template_include بلافاصله قبل از وارد کردن تمپلیت های تعیین شده وردپرس اجرا می شود . از این قلاب فیلتر می توان برای بازنویسی رفتار تمپلیت پیش فرض وردپرس استفاده کرد .
در بخش زیر چند تمپلت وردپرس را مشاهده می کنید :
- front_page_template
- home_template
- single_template
- page_template
- attachment_template
- archive_template
- category_template
- tag_template
- author_template
- date_template
- archive_template
- search_template
- 404_template
- index_template
وردپرس بر اساس صفحه جاری که یک کاربر یا ربات در حال خواندن آن است ، یک تمپلیت را انتخاب می کند .
شما می توانید برای هر قلاب فیلتر منحصر بفرد یا همه قلاب فیلتر ها ، توسط قلاب template_include یک فیلتر اضافه کنید .
فرض کنید که شما می خواهید یک ساختار تمپلیت سفارشی را ایجاد کنید که پوسته های وردپرس به جای استفاده از تمپلیت های پیش فرض وردپرس ، از این ساختار تمپلیت سفارشی استفاده کنند . اینکار بوسیله قلاب فیلتر template_include و سایر قلاب های فیلتری که در مطالب قبلی آنها را مشاهده کردید ، امکانپذیر است .
در مثال زیر بررسی شده است که آیا فایل مخصوص به تمپلیت نمایش یک نوشته ( فایل single.php ) که دارای یک دسته بندی خاص است ، وجود دارد یا خیر . اگر این فایل وجود نداشته باشد ، وردپرس فایل index.php را برای نمایش نوشته جستجو خواهد کرد .
در تابع موجود در مثال زیر ، ابتدا فایل single-category-$slug.php جستجو می شود ($slug همان نامک دسته بندی نوشته می باشد) . بنابراین اگر در سایت دسته بندی به نام art وجود داشته باشد و تمپلیتی به نام single-category-art.php هم وجود داشته باشد ، به جای تمپلیت single.php نمایش داده خواهد شد .
با این روش شما می توانید نوشته های مربوط به هر دسته بندی را با استفاده از کمی کد css از لحاظ ظاهری متمایز کنید یا با استفاده از کدهای php آنها را کاملاً اختصاصی کنید .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php add_filter( 'single_template', 'boj_single_template' ); function boj_single_template( $template ) { global $wp_query; /* Check if viewing a singular post. */ if ( is_singular( 'post' ) ) { /* Get the post ID. */ $post_id = $wp_query->get_queried_object_id(); /* Get the post categories. */ $terms = get_the_terms( $post_id, 'category' ); /* Loop through the categories, adding slugs as part of the file name. */ $templates = array(); foreach ( $terms as $term ) $templates[] = "single-category-{$term->slug}.php"; /* Check if the template exists. */ $locate = locate_template( $templates ); /* If a template was found, make it the new template. */ if ( !empty( $locate ) ) $template = $locate; } /* Return the template file name. */ return $template; } ?> |


ثبت ديدگاه