The Loop در وردپرس – مقدمه
The Loop در وردپرس، مکانیزم پیش فرض هسته وردپرس می باشد که وردپرس برای گرفتن خروجی از انواع پست ها از بین Template Files های قالب شما، استفاده می کند.
به جرات می توان گفت که The Loop یکی از مهم ترین مفاهیم موجود در وردپرس می باشد که شما با فراگیری آن تقریبا به هر شکلی که بخواهید می توانید پست های مختلف و همچنین پست های سفارشی مختلف را در وردپرس نمایش دهید.
اینکه وردپرس باید چه تعداد از پست های درخواست شده را بازیابی کند، از تعداد پست هایی که قرار است در هر صفحه نمایش داده شود (یا همان number of post per page ) معین می گردد که این تعداد در تنظیمات مربوط به بخش خواندن در وردپرس موجود می باشد.
در داخل یک Loop ، وردپرس هر پست را که قرار است در صفحه جاری نمایش داده شود را بازیابی کرده و آن را مطابق با دستورات داده شده در قالب شما قالب بندی می کند و نمایش می دهد.
The Loop کلیه داده های مربوط به هر پست را از دیتابیس وردپرس استخراج کرده و اطلاعات آن ها را جایگزین Template Tag هایی می کند که در داخل کدهای شما، قرار داده شده اند. هر کد HTML یا PHP که در The Loop موجود باشد، برای هر پست به صورت مجزا مورد پردازش قرار خواهند گرفت.
به بیان ساده تر، The Loop همان طور که از نامش پیداست، به عنوان یک حلقه در وردپرس عمل کرده که به واسطه این حلقه، وردپرس می تواند در هربار تکرار از این حلقه، یک پست به همراه اطلاعات مربوط به آن پست را از دیتابیس خود بازیابی کرده و سپس دستورات مشخص شده بر روی آن ها را انجام داده و در صفحه جاری قرار دهد.
شما از The Loop می توانید برای تعداد زیادی از کارها در وردپرس استفاده کنید، به عنوان مثال:
- برای نمایش عنوان ها یا titlesو خلاصه ها یا excerpts یک پست بر روی صفحه homepage سایت شما
- برای نمایش محتوا و نظرات بر روی یک پست یا همان single post
- برای نمایش محتواهای پست ها یا یک پست خاص بر روی یک صفحه جداگانه با استفاده از template tag ها
- برای نمایش داده های مربوط به پست های سفارشی یا custom post type و همین طور فیلد های سفارشی custom fields
شما علاوه بر این می توانید با استفاده از سفارشی سازی The loop به راحتی محتواهای خود را در داخل Template Files ها نمایش داده و آن ها را دستکاری نمایید. ضمن اینکه توانایی ایجاد جستجوهای کاملا حرفه ای را با استفاده از The loop در وردپرس خواهید داشت.
نگاه دقیق تر به ساختار The Loop
حلقه ساده و ابتدایی در وردپرس به شکل زیر می باشد:
<?php if ( have_posts() ) : ?> <?php while ( have_posts() ) : the_post(); ?> ... Display post content <?php endwhile; ?> <?php endif; ?>
این حلقه بیان می کند در صورتی که پستی در دیتابیس موجود باشد، کنترل حلقه به داخل آن منتقل شده و شروع به نمایش آن ها می کند و این امر تا زمانی که به آخرین پست درخواستی برسد، ادامه خواهد داشت.
اگر بخواهیم به صورت کامل تر این فرآیند را شرح دهیم، می توانیم آن را به بخش های زیر تقسیم کنیم:
- تابع have_posts در ابتدای حلقه، چک می کند که آیا پستی برای نمایش دادن در داخل دیتابیس وجود دارد یا خیر
- اگر پست یا پست هایی موجود باشد، حلقه while تا رسیدن به آخرین پست موجود در پایگاه داده ادامه پیدا کرده و هر بار برای یک پست، اجرا می شود. تا زمانی که خروجی تابع have_post صحیح یا trueباشد، حلقه while ادامه پیدا کرده و کدهای درون حلقه برای هر پست یک بار به صورت مجزا، اجرا خواهند شد.
استفاده از The Loop
شما می توانید از The Loop در هر کدام از Template Files های خود در قالب استفاده نمایید. شما باید به چند نکته در هنگام استفاده از the loop دقت نمایید. فرض کنید که بخواهید از آن در فایل index.php یا هر Template Files دیگری استفاده کنید. به دلیل آنکه شما نمی خواهید فایل هدر شما بارهای بار در قالب شما تکرار نگردد، شما می باید دقیقا the loop را حتما پس از تابع get_header در فایل های خود استفاده نمایید، در غیر این صورت فایل شما بارها اجرا خواهد شد. برای مثال شما باید حتما the loop را بعد از get_header و به صورت زیر استفاده نمایید:
<?php get_header(); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> ... Display post content <?php endwhile; endif; ?>
همان طور که در کدهای بالا نیز مشاهده نمودید، انتهای the Loop می باید با endwhile و endif به پایان برسد. در نظر داشته باشد که برای استفاده از The loop می باید حتما دستورات شما با if و while شده و با endwhile و endif به پایان برسند. فقط کد های که داخل این بخش باشند قابل اجرا در loop خواهند بود.
با استفاده از این ساختار، آنگاه هر template tag ای که بخواهید را می توانید در هنگام نمایش پست های خود و در داخل این ساختار، بکار ببندید و از آن برای فرمت دهی به کدهای خود استفاده نمایید.
ساخت یک پیام سفارشی ۴۰۴ در صورت وجود نداشتن پستی برای نمایش
ممکن است که شرط حلقه در ابتدای ورود به the loop برابر با false باشد، یعنی پستی با شرایط درخواست شده برای نمایش موجود نباشد، در این حالت شما می توانید از یک پیام سفارشی ۴۰۴ مانند این پیام که “پستی برای نمایش وجود ندارد” ، استفاده کنید. این پیام باید بین دستورات endwhile و endif همانند مثال پایین، قرار گیرند.
یک مثال بسیار ساده در این مورد، می تواند کدی باشد که زیر می توانید ببینید:
<?php get_header(); if ( have_posts() ) : while ( have_posts() ) : the_post(); the_content(); endwhile; else : _e( 'Sorry, no posts matched your criteria.', 'textdomain' ); endif; get_sidebar(); get_footer(); ?>
راهنما برای مطالعه بیشتر:
شما می توانید از لینک های زیر برای مطالعه بیشتر استفاده نمایید:
راهنما برای خواندن سایر مقالات سایت به صورت دسته بندی شده:
شما می توانید از طریق لینک های کاربردی زیر به سایر مقالات سایت که کاملا بصورت طبقه بندی شده وجود دارد، مراجعه نموده و از آن ها استفاده کنید:
سلام
این تابع به چه درد میخوره؟ و اینکه حتما باید باشه؟
get_sidebar();
سلام به شما دوست عزیز
برای آشنایی با نحوه کارکرد این تابع باید با template file ها در وردپرس آشنا باشید.
برای این موضوع می توانید به مقاله زیر در سایت ما مراجعه کنید:
آشنایی با Template File ها در وردپرس
در صورتی که پس از خواندن این مقاله، باز سوالی در مورد آن داشتید، می توانید در همان بخش مجدد سوال فرمایید تا راهنمایی کنم.
ممنونم از لطف شما
عالی