حلقه وردپرس بخشی جدایی ناپذیر از نحوه نمایش محتوا در سایت وردپرس است. اگر میخواهید بتوانید برخی از قسمتهای سایت را سفارشی کنید، باید در مورد حلقه وردپرس بیشتر بدانید. اگر تا به حال نام حلقه وردپرس را نشنیده باشید یا از قبل آشنایی اولیه داشته باشید، این مطلب شما را در مورد همه چیزهایی که باید در مورد حلقه وردپرس بدانید، آکاه میکند.
حلقه وردپرس چیست؟
حلقه وردپرس (WordPress Loop) همان چیزی است که وردپرس برای نمایش محتوا در سایت استفاده میکند که به طور سنتی کد PHP است که میتوانید با استفاده از برچسبهای قالب آن را سفارشی کنید، اگرچه تمهای بلوک وردپرس جدیدتر، از بلوک Query Loop به جای PHP استفاده میکنند.
به عبارت فنی تر، حلقه (Loop) از دیتابیس سایت پرس و جو میکند تا دادههای هر نوشته را بازیابی نموده و سپس آن دادهها را مطابق با یک الگو نمایش دهد. برای کنترل این الگو، بسته به اینکه از PHP یا بلوک Query Loop استفاده نمائید، می توانید از انواع تگها یا بلوکهای قالب استفاده کنید.
برای مثال، فرض کنید صفحهای دارید که جدیدترین پستهای وبلاگ شما را فهرست میکند، مانند صفحه فهرست اصلی وبلاگ:
- ابتدا حلقه بررسی میکند که آیا نوشتهای وجود دارد یا خیر.
- در صورت وجود نوشته، اولین نوشته را مطابق با قالب شما نمایش میدهد.
- سپس، بررسی می کند که آیا پست دیگری وجود دارد یا خیر. اگر نوشته دیگری وجود داشته باشد، دوباره قالب را loop کرده و نوشته دوم را مطابق همان الگو نشان میدهد.
- تا زمانی که نوشته دیگری وجود نداشته باشد (یا به محدودیت دیگری مانند قوانین صفحه بندی برسد) به looping در نوشتهها ادامه میدهد.
وردپرس چه زمانی از حلقه برای نمایش محتوا استفاده میکند؟
وردپرس برای نمایش محتوا در هر صفحهای که چندین بخش از محتوا را فهرست میکند (نوشتهها، برگهها، انواع پستهای سفارشی و غیره) به حلقه متکی است.
در این بخش برخی از موقعیتهای اصلی زمانی که وردپرس از حلقه استفاده میکند، آورده شده است، اگرچه این یک لیست کامل نیست:
- صفحه اصلی وب سایت که پستهای اخیر را نشان میدهد
- صفحه اصلی وبلاگ
- صفحات فهرست بندی دستهها
- صفحات فهرستبندی برچسبها
- صفحات نتایج جستجو
- صفحات فهرست بندی نوع پست سفارشی
از نظر فنی، وردپرس میتواند از حلقه برای نمایش یک محتوای مجزا استفاده کند. در این مواقع، حلقه پس از درخواست اولین مورد به پایان میرسد.
با این حال، هنگامی که بیشتر مردم به حلقه وردپرس فکر می کنند، به این فکر می کنند که آن را از طریق چندین آیتم حلقه می اندازد تا آنها را در نوعی لیست نمایش دهد.
برای چه کاری می توانید از حلقه وردپرس استفاده کنید؟
یادگیری نحوه ویرایش و دستکاری حلقه وردپرس میتواند به شما کمک کند از وردپرس برای ساخت وب سایتهای کاربر پسندتر و پویاتر استفاده کنید.
در اینجا سه روش اصلی وجود دارد که می توانید از حلقه وردپرس برای بهبود سایت خود استفاده کنید:
نحوه نمایش محتوای اصلی پست و ابرداده را کنترل کنید
رایج ترین دلیلی که ممکن است بخواهید حلقه وردپرس را سفارشی کنید، کنترل طرح بندی اولیه برای محتوای سایت است.
برای مثال، فرض کنید میخواهید طرحبندی صفحه وبلاگ خود را کنترل کنید. با دستکاری حلقه وردپرس، میتوانید چیدمان عناصر مهم مانند عنوان نوشته، محتوا، نویسنده، متادیتا (مانند تاریخ انتشار) و غیره را کنترل کنید.
با استفاده از شرطها، میتوانید طرحبندیهای مختلفی برای انواع مختلف محتوا ایجاد کنید. برای مثال، میتوانید از یک طرحبندی برای فهرست کردن نوشتهها از دسته اخبار و از یک طرحبندی دیگر برای فهرست کردن نوشتههای دسته مقالات استفاده کنید.
این قابلیت به شما امکان میدهد طراحی را برای انواع مختلف محتوای سایت خود بهینه نموده و تجربهای عالی برای بازدیدکنندگان خود ایجاد کنید.
برای ساخت سایت های پویا تر، داده های فیلد سفارشی را وارد کنید
درک نحوه استفاده از حلقه وردپرس همچنین میتواند به شما کمک کند تا از وردپرس برای ساخت انواع سایتهای محتوا پویاتر استفاده کنید.
به عنوان مثال، فرض کنید می خواهید یک سایت مشاور املاک ایجاد کنید. به عنوان بخشی از آن، میخواهید صفحهای داشته باشید که اطلاعات خانههایی را که برای فروش از طریق نوع پست سفارشی خانه ایجاد کردهاید فهرست نماید.
اگر فقط از طرح پیشفرض فهرست پستی که با موضوع شما ارائه میشود استفاده میکنید، فقط اطلاعات اولیه مانند عنوان و محتوا را نشان میدهد – درست مانند نحوه نمایش پستهای وبلاگ معمولی شما.
با ویرایش حلقه وردپرس برای نوع پست خانه و افزودن برچسبهای قالب مربوطه، می توانید اطلاعاتی از فیلدهای سفارشی که استفاده میکنید، مانند تعداد اتاق خوابها و حمام در هر خانه، متراژ مربع و غیره را اضافه کنید.
محتوای غیر پستی را در لیست های پست خود درج کنید (مثلا تبلیغات)
یادگیری نحوه استفاده از حلقه وردپرس همچنین میتواند به شما کمک کند محتوای غیر پویا را در لیست محتوای سایت خود وارد کنید. منظور محتوایی است که سایت از دیتابیس وردپرس استخراج نمیکند.
به عنوان مثال، فرض کنید می خواهید یک بنر تبلیغاتی را بین هر پست در لیست (یا نوع دیگری از محتوای استاتیک) درج کنید. با ویرایش حلقه، میتوانید به راحتی تبلیغات خود را در هر نقطه از طرحبندی تزریق کنید.
دو گزینه برای کار با حلقه وردپرس
با توسعه تم مدرن وردپرس، نحوه تعامل شما با حلقه وردپرس به نوع پوستهای که استفاده میکنید بستگی دارد.
در گذشته، تمام قالبهای وردپرس مبتنی بر قالبهای PHP بودند، بنابراین باید با استفاده از PHP در آن فایلهای قالب با حلقه کار کنید. امروزه از این نوع تم ها به عنوان قالبهای کلاسیک وردپرس یاد میشود.
بیشتر پوستههای محبوب وردپرس هنوز از این رویکرد کلاسیک استفاده میکنند، به این معنی که شما از PHP برای کار با حلقه وردپرس استفاده خواهید کرد. برخی از نمونههای تمهای کلاسیک عبارتند از Astra، GeneratePress، Kadence، Neve، OceanWP و غیره.
با این حال، تمهای جدید بلوک وردپرس ساخته شده در ویرایشگر سایت دیگر از فایلهای قالب PHP مانند تم های کلاسیک استفاده نمیکنند، بنابراین اگر از یک تم بلوکی استفاده میکنید، نمیتوانید از PHP برای سفارشی کردن حلقه استفاده نمائید. در عوض، این تم های بلوک جدید از یک بلوک خاص Query Loop برای سفارشی کردن حلقه وردپرس استفاده میکنند.
در ادامه، شما را با استفاده از هر دو روش برای کار با حلقه وردپرس آشنا خواهیم کرد:
- اگر از یک تم کلاسیک استفاده میکنید، از PHP برای تعامل با حلقه استفاده خواهید کرد.
- اگر از یک تم بلوک استفاده میکنید، از روش بلوک Query Loop برای تعامل با حلقه استفاده میکنید.
اگر مطمئن نیستید که از چه نوع تمی استفاده میکنید، میتوانید به گزینههای زیر منوی ظاهر در پیشخوان وردپرس خود نگاه کنید:
- اگر گزینههای دیگری مانند سفارشی کردن (Customize)، ابزارکها (Widgets) و ویرایشگر فایل تم (Theme File Editor) را میبینید، از یک تم کلاسیک استفاده میکنید.
- اگر گزینه ویرایشگر (Editor) را بدون گزینههای دیگر میبینید، معمولا به این معنی است که از یک تم بلوک استفاده میکنید.
نحوه استفاده از حلقه وردپرس با تم های کلاسیک (کد)
اگر از یک تم کلاسیک وردپرس استفاده میکنید، با حلقه وردپرس در فایلهای قالب PHP پوسته خود کار خواهید کرد.
در اینجا یک مثال از اجرای بسیار ابتدایی حلقه وردپرس آورده شده است:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); the_title( '<h2>', '</h2>' ); the_post_thumbnail(); the_excerpt(); endwhile; else: _e( 'Sorry, no posts matched your criteria.', 'textdomain' ); endif; ?>
برای اینکه بفهمید این کد چه کاری انجام می دهد، ما آن را به سه بخش تقسیم می کنیم:
- باز کردن حلقه
- استفاده از تگهای قالب برای کنترل محتوایی که نمایش داده شود
- بستن حلقه
بعد به موضوع کمی پیشرفته تر استفاده از عبارات شرطی برای تنظیم حلقه بر اساس موقعیتهای مختلف می پردازیم.
نحوه شروع حلقه وردپرس
برای باز کردن حلقه وردپرس، چهار عنصر خواهید داشت:
- <?php – به وب سرور میگوید که از PHP استفاده خواهید کرد.
- if ( have_posts() ) –به سرور میگوید که باید بررسی کند که آیا دیتابیس سایت دارای پستهایی است که با پرس و جو مطابقت دارد یا خیر، و سپس در صورت وجود نوشته، کد زیر را اجرا کند. اگر پستی وجود ندارد، می توانید از عبارت else برای اضافه کردن متنی استفاده کنید که در زیر به آن خواهیم پرداخت.
- while ( have_posts() ) –به سرور میگوید که تا زمانی که نوشتههایی برای نمایش وجود دارد باید به حلقه زدن ادامه دهد. این محدودیت معمولا با انتخاب در قسمت تنظیمات → خواندن (Settings → Reading) تنظیم میشود. به عنوان مثال، اگر سایت خود را طوری پیکربندی کنید که حداکثر ۱۰ نوشته در هر صفحه نمایش داده شود، سرور تا ۱۰ پست را به چرخش در می آورد (تا زمانی که حداقل ۱۰ پست منتشر کرده باشید).
- the_post(); – به سرور میگوید که در واقع دادههای هر پست را از دیتابیس سایت بازیابی کند. شما می توانید نمایش این داده ها را با استفاده از تگهای قالب کنترل کنید که در قسمت بعدی به آن خواهیم پرداخت.
&amp;lt;?php if ( have_posts() ) : while ( have_posts() ) : the_post();
نحوه کنترل محتوای حلقه وردپرس
هنگامی که حلقه وردپرس را باز کردید، میتوانید از برچسبهای قالب (template tags) برای کنترل اطلاعاتی که میخواهید برای هر نوشته اضافه کنید، همراه با طرحبندی کلی آن محتوا استفاده کنید.
تگ های قالبی که در داخل حلقه استفاده میکنید برای هر پست نمایش داده شده تکرار خواهند شد.
در این بخش برخی از متداولترین تگهای قالب که ممکن است بخواهید از آنها استفاده کنید آورده شده است:
- the_title()
- the_content()
- the_excerpt()
- the_post_thumbnail()
- the_author()
- next_post_link()
- the_ID()
- the_meta()
- the_shortlink()
- the_tags()
- the_time()
- previous_post_link()
- the_category()
اگر در حال ساخت سایتهای سفارشی وردپرس هستید، میتوانید دادههای مربوط به فیلدهای سفارشی را در حلقه وردپرس قرار دهید. سادهترین راه برای انجام این کار از طریق افزونههایی مانند Advanced Custom Fields (ACF)، Meta Box یا Pods است که همگی دارای عملکرد خاص خود برای برچسبهای قالب هستند که میتوانید در حلقه وردپرس استفاده کنید.
به عنوان مثال، بیایید برای یک حلقه ساده به سینتکس نگاه کنیم که فقط عنوان، تصویر کوچک تصویر ویژه و گزیدهای از هر پست را نمایش می دهد.
اینطور ممکن است به نظر برسد:
// first, we need to open the loop as we showed you in the previous section &lt;?php if ( have_posts() ) : while ( have_posts() ) : the_post(); // now, we can use template tags to control what information to display for each post the_title( '&lt;h2&gt;', '&lt;/h2&gt;' ); the_post_thumbnail(); the_excerpt();
نحوه پایان دادن به حلقه وردپرس
برای بستن حلقه وردپرس، باید حلقه while، if و PHP را ببندید.
برای رسیدگی به شرایطی که وردپرس قادر به بازگرداندن هیچ نوشتهای نیست، میتوانید قبل از بستن عبارت if، عبارت else را اضافه کنید.
بستن حلقه برای مثال بالا، با افزودن عبارت else برای پوشش موقعیتهایی که در آن هیچ پستی با پرس و جو مطابقت ندارد، این طور به نظر میرسد.
// first, we need to open the loop as we showed you in the previous section <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); // now, we can use template tags to control what information to display for each post the_title( '<h2>', '</h2>' ); the_post_thumbnail(); the_excerpt(); // once we're finished with the template tags, we can now close the loop endwhile; else: // this tells your site what to do if no posts match the query _e( 'Sorry, no posts matched your criteria.', 'textdomain' ); endif; ?>
استفاده از شرطی ها برای کنترل رفتار در حلقه وردپرس
هنگامی که ساختار اصلی حلقه را درک کردید، می توانید از آن به روشهای پیشرفته تری استفاده کنید.
یکی از بهترین مکان ها برای شروع استفاده از دستورات شرطی است. اینها به شما امکان میدهند به راحتی رفتار Loop را برای انواع مختلف محتوا تنظیم کنید، مانند مثال قبلی ما که میتوانید از یک طرح برای فهرست کردن پستها در دسته مقالات و دیگری برای پستهای دسته اخبار استفاده کنید.
در این بخش برخی از برچسبهای شرطی (conditional tags) وجود دارد که میتوانید استفاده کنید:
- is_home()
- is_admin()
- is_single()
- is_page()
- is_page_template()
- is_category() یا in_category()
- is_tag()
- is_author()
- is_search()
- is_404()
- has_excerpt()
نحوه استفاده از حلقه وردپرس در تم های بلوکی (ویرایشگر سایت)
همانطور که در بالا ذکر شد، تمهای بلوک وردپرس از ویرایشگر سایت برای کنترل قالبهای پوسته به جای فایلهای قالب PHP استفاده میکنند.
به همین دلیل، اگر از یک تم بلوک استفاده میکنید، نمیتوانید از PHP برای سفارشی کردن حلقه وردپرس استفاده کنید. در عوض، از بلوک Query Loop استفاده خواهید کرد.
با این حال، اصول اولیه یکسان است.
در اصل، شما از بلوک Query Loop برای باز کردن حلقه استفاده خواهید کرد. داخل بلوک Query Loop یک کانتینر Post Template و سایر کانتینرها برای صفحه بندی و no results وجود دارد.
سپس، به جای استفاده از برچسبهای قالب مانند آنچه در PHP انجام میدهید، بلوکهای تم وردپرس را در کانیتینر Post Template اضافه میکنید تا طرحبندی هر آیتم حلقه را کنترل کنید.
نحوه اضافه کردن بلوک Query Loop
برای شروع، به ویرایشگر سایت (ظاهر → ویرایشگر) بروید و الگوی مربوطه را ایجاد یا ویرایش کنید. همچنین میتوانید حلقه را به یک قسمت از محتوا اضافه کنید، مانند صفحهای که میخواهید پستها را در آن فهرست کنید.
در هر صورت، می توانید با افزودن بلوک Query Loop شروع کنید. سپس، میتوانید بین استفاده از یکی از الگوهای حلقه موجود در طرح زمینه خود با کلیک بر روی Choose یا شروع از یک بوم خالی با کلیک کردن روی Start blank، یکی را انتخاب کنید.
برای این مثال، ما Start blank را انتخاب می کنیم.
سپس میتوانید از میان چند تغییر شروع مختلف انتخاب کنید، که سادهترین گزینه این است که فقط عنوان و محتوای هر مورد را نمایش دهید.
هنگامی که این کار را انجام دادید، می توانید از تنظیمات موجود در نوار کناری بلوک Query Loop برای کنترل محتوایی که می خواهید در حلقه قرار دهید (query) استفاده کنید.
بهطور پیشفرض، پستهای معمولی را فهرست میکند، اما میتوانید نوع پست را به فهرست انواع دیگر محتوا تغییر دهید. همچنین میتوانید ترتیب را تغییر دهید و از فیلترها استفاده کنید تا فقط بخشهای خاصی از محتوا را پرس و جو کنید، مانند محتوایی که دستهبندی خاصی دارد، از نویسنده خاصی آمده است و غیره.
نحوه سفارشی سازی قالب Loop
اکنون میتوانید از بلوکهای موجود در بخش Theme برای سفارشیسازی بیشتر قالب پست در Query Loop استفاده کنید. باز هم، این بلوک ها همان هدف اصلی را به عنوان تگ های قالب در کد PHP انجام می دهند.
برای مثال، اگر میخواهید نویسنده را برای هر قسمت از محتوا نمایش دهید، میتوانید بلوک نام نویسنده را در جایی که میخواهید نام نویسنده نمایش داده شود، اضافه کنید.
همچنین بلوکهای دیگری را برای موارد مرتبط پیدا خواهید کرد، مانند تصویر ویژه، تاریخ، دستهها، برچسبها و غیره.
اگر به طرح کلی نگاه کنید، می بینید که همه این بلوک ها در گروه Post Template قرار می گیرند.
همچنین گروههای دیگری برای کنترل صفحهبندی و موقعیتهایی وجود دارند که در آنها کوئری هیچ نتیجهای ندارد.
هاست وردپرس با وب سرور محبوب لایت اسپید و کش لایت اسپید باعث میشود تا سرعت لود فوق العادهای را تجربه کنید.
با خرید هاست وردپرس کانفیگ حرفهای و نظارت بر سرور به صورت پیوسته توسط تیم فنی پارسدِو انجام خواهد شد.
نکاتی برای کار با حلقه وردپرس
از آنجایی که Loop بخشی جدایی ناپذیر از وردپرس است، هر گونه خطا یا اشتباه میتواند باعث ایجاد مشکلاتی در سایت شود. این امر به ویژه اگر با قالبهای PHP کار میکنید صادق است، زیرا خطاهای سینتکس میتوانند پیام «یک خطای مهم در وبسایت شما وجود دارد» را ایجاد کنند.
برای جلوگیری از مشکلات، در اینجا چند نکته وجود دارد…
در یک محیط توسعه لوکال آزمایش کنید و یاد بگیرید
اگر این اولین باری است که با حلقه وردپرس کار میکنید، احتمالا میخواهید مفاهیم مختلف را آزمایش کرده و بازی کنید تا درک خود را از نحوه کارکرد آن بیشتر کنید.
برای انجام ایمن این کار، می توانید از یک محیط توسعه لوکال وردپرس استفاده کنید، که به شما یک جعبه ایمنی امن با استفاده از محیط غیر عملیاتی میدهد.
در یک محیط صحنه سازی برای سایتهای زنده کار کنید
اگر در حال کار بر روی حلقه وردپرس برای یک وب سایت وردپرس زنده هستید، به شدت توصیه میکنیم قبل از اعمال تغییرات در سایت زنده وردپرس خود، همه کارها را در یک سایت مرحله بندی (staging ) انجام دهید.
افزونههای جایگزین برای کار مستقیم با حلقه وردپرس
اگر کار کردن مستقیم با حلقه وردپرس را کمی ترسناک میدانید، چندین پلاگین محبوب وجود دارد که راههای جایگزینی برای حلقه کردن محتوا بدون نیاز به استفاده از PHP یا بلوک Query Loop در اختیار شما قرار میدهند.
در اینجا چند جایگزین افزونه حلقه وردپرس وجود دارد که باید در نظر بگیرید، اگرچه این به هیچ وجه یک لیست کامل نیست.
Elementor Pro
المنتور یک افزونه محبوب بصری است که صفحه ساز را بکشید و رها کنید. با Elementor Pro، میتوانید به قابلیت ساخت تم کامل دسترسی داشته باشید تا فایلهای قالب تم خود را با استفاده از المنتور طراحی کنید. در سال ۲۰۲۲، المنتور یک ویژگی Loop Builder را به Elementor Pro اضافه کرد که به شما امکان می دهد محتوای حلقه را با استفاده از رابط بصری المنتور کنترل و سفارشی کنید.
Bricks
Bricks یکی دیگر از سایت سازهای بصری محبوب برای وردپرس است. به عنوان بخشی از بسیاری از ابزارهای طراحی خود، شامل Query Loop builder خود است که از رویکرد کد ساده شده، همراه با تعداد زیادی گزینه اضافی در رابط گرافیکی استفاده می کند.
WP Show Posts
WP Show Posts به اندازه دو افزونه قبلی به شما انعطاف پذیری نمیدهد. با این حال، اگر به دنبال راهی آسان برای فهرست کردن پستهای وردپرس در قالبهای مختلف هستید، ممکن است سادهترین ابزار برای این کار باشد.
این افزونه رایگان و از همان توسعه دهنده تم محبوب GeneratePress است. در حالی که توسعهدهنده دیگر ویژگیهای جدیدی را به افزونه اضافه نمیکند، همچنان عملکرد موجود افزونه را حفظ میکند.
جمع بندی
برای ارتقاء مهارتهای توسعه وردپرس خود، باید حلقه وردپرس را بشناسید. حلقه برای نحوه نمایش محتوا در وردپرس ضروری است. یادگیری نحوه استفاده از آن به شما کنترل بیشتری بر نحوه نمایش محتوا در سایت خود میدهد.
با این اوصاف، تم های جدیدتر بلوک وردپرس دیگر مانند تمهای کلاسیک به قالبهای PHP متکی نیستند، بنابراین ممکن است نیازی به استفاده از PHP برای کار با حلقه نداشته باشید. در عوض، اگر از جنبش تم بلوک استقبال می کنید، از بلوک Query Loop برای دستیابی به اثرات مشابه استفاده خواهید کرد.
در هر صورت، یادگیری نحوه استفاده موثرتر از حلقه وردپرس، سود زیادی را به همراه خواهد داشت.