شرح حلقة WordPress: ما هو وكيف يعمل

نشرت: 2022-03-12

الحلقة هي جزء أساسي من WordPress. بدونها ، لن ترى محتوى على أي موقع ويب WordPress. إنها مسؤولة عن التأكد من ظهور المقالات على صفحة المدونة وفي الأرشيف بالإضافة إلى المحتوى الثابت في الصفحات الفردية.

إذا كنت مصممًا للثيمات ، فلن تتعلم كيفية استخدامه. ومع ذلك ، بصفتك مستخدمًا عاديًا لـ WordPress ، قد لا تدرك وجوده.

من أجل التخفيف من ذلك ، في هذا المنشور ، سنشرح بالتفصيل حلقة WordPress. سنتعرف على ماهيته وكيف يعمل ، وأين يمكن العثور عليه في WordPress. ستتعلم أيضًا كيفية إنشاء حلقة خاصة بك ومشاهدة بعض الأمثلة على حلقة WordPress لترسيخ فهمك لها.

ما هي حلقة WordPress (وأين تجدها)؟

وأوضح حلقة وورد

إذا كنت ستشرح بإيجاز ماهية حلقة WordPress ، فهي ببساطة الترميز الذي يجلب ويخرج المحتوى على الصفحات في موقع WordPress على الويب. سواء كانت هذه صفحة ثابتة أو منشور أو صفحة مدونة أو أرشيف - في أي مكان يسحب فيه WordPress المحتوى من قاعدة البيانات ويعرضه على الصفحة ، فإن الحلقة متضمنة.

ومع ذلك ، لماذا تسمى حلقة في المقام الأول؟

لأنه سيعمل بشكل متكرر. بالإضافة إلى ذلك ، كما سترى أدناه ، فهي تتكون حرفيًا من حلقة PHP.

كم مرة يتم تشغيل حلقة WordPress؟

حتى لا يتبقى شيء لعرضه. حتى على الصفحات الثابتة ، فإنه يتدرج من خلال المحتوى المتاح. ومع ذلك ، في هذه الحالة ، يتوقف بعد تمريرة واحدة.

كيف تبدو حلقة WordPress؟

لتوضيح ما نتحدث عنه بشكل أوضح ، دعنا نلقي نظرة على مثال ثم ننتقل إليه خطوة بخطوة. فيما يلي مثال لما تبدو عليه حلقة WordPress البسيطة:

 if ( have_posts() ) : while ( have_posts() ) : the_post(); // Display content here endwhile; endif;

إذا كنت تعرف PHP بالفعل أو كنت مطور WordPress ، فلن تواجه أي مشكلة في فهمها. ومع ذلك ، بالنسبة لأي شخص آخر ، دعنا ننتقل إلى الأجزاء واحدة تلو الأخرى.

  • if ( have_posts() ) : - هذه عبارة if تستخدم الوظيفة have_posts (). إذا كانت العبارات شائعة في البرمجة ، فإنها تقول ببساطة "إذا كان الشرط التالي ينطبق ، تابع". في هذه الحالة ، يكون الشرط هو have_posts() ، وهو مجرد التحقق من وجود أي منشورات يمكن عرضها.
  • while ( have_posts() ) : - هذا السطر عبارة عن while -loop ويمثل بداية حلقة WordPress. سيقوم بتنفيذ التعليمات البرمجية التي يحتوي عليها طالما أن حالتها صحيحة. مرة أخرى ، الشرط هو ما إذا كان لدى WordPress أي منشورات في المتجر. يتم تحديد عدد المرات التي ستعيد فيها القيمة true من خلال عدد المنشورات التي تم تعيينها في إعدادات WordPress في واجهة المسؤول.
  • the_post(); - هذا هو الكود الذي تنفذه الحلقة. إنها إحدى وظائف WordPress التي تستدعي جميع البيانات المتاحة للمنشور التالي وحفظها لتجهيزها للعرض. لذلك ، لدينا الكثير من علامات القوالب التي سنتحدث عنها أدناه.
  • // Display content here - هنا نضع الترميز الذي يحدد أي جزء من المحتوى سيتم عرضه وبأي طريقة. عادة ما يكون مزيجًا من PHP و HTML. لا نعرضه هنا لأنه أكثر تعقيدًا وسنستعرضه لاحقًا.
  • endwhile; - قطعة الكود التي تغلق حلقة while -loop بعد أن تنجز ما نحتاجه للقيام به.
  • endif; - نفس ما ورد أعلاه لكن لبيان if .

لذلك ، فإن الهيكل هو كما يلي: تحقق مما إذا كانت المنشورات موجودة ، ثم اسحب البيانات الضرورية من قاعدة البيانات واعرضها بطريقة محددة مسبقًا ، كرر هذا طالما أن هناك مشاركات صالحة للعرض.

النحو البديل

شيء واحد سريع ، سترى أحيانًا الحلقة مكتوبة على النحو التالي:

 if ( have_posts() ) { while ( have_posts() ) { the_post(); // Display content here } // end while } // end if

هذا هو بالضبط نفس المثال أعلاه ، فقط في صيغة PHP بديلة. أي واحد تستخدمه متروك لك حقًا. من أجل الاتساق ، سنستمر في الاختلاف الأول.

أين تجد حلقة WordPress؟

حقيقة أن الحلقة تعمل دائمًا عندما يظهر المحتوى على الصفحة يجيب بالفعل عن مكان العثور على حلقة WordPress. الإجابات موجودة في كل ملف قالب لموضوعك الذي يعرض المحتوى.

بدلاً من ذلك ، بناءً على بنية السمة الخاصة بك ، قد تكون أيضًا في جزء قالب. هذه هي ملفات القوالب التي تحتوي على أجزاء التعليمات البرمجية المستخدمة بشكل متكرر (مثل الحلقة). يمكن سحبها إلى ملفات أخرى بدلاً من إعادة استخدام مقتطف الشفرة نفسه في كل مرة.

حلقة ووردبريس في أجزاء القالب مثال هندسة موضوع

على سبيل المثال ، إذا فتحت ملف page.php الخاص بسمة Twenty-One ، يمكنك أن ترى أن الحلقة هنا مقسمة إلى أجزاء. بينما يبدأ داخل الملف نفسه ، فإن القسم الذي يحدد كيفية إخراج البيانات موجود في جزء قالب يسمى content-page.php .

 /* Start the Loop */ while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content/content-page' ); // If comments are open or there is at least one comment, load up the comment template. if ( comments_open() || get_comments_number() ) { comments_template(); } endwhile; // End of the loop.

يحدد التسلسل الهرمي لقالب WordPress الملف الذي يستخدمه النظام لعرض نوع الصفحة ويجب أن يحتوي كل ملف إما على حلقة أو مرجع إلى حيث يمكنك العثور عليه.

هذا يعني أيضًا أن الحلقة يمكن أن تبدو مختلفة في الملفات الفردية ، وهذا يعني في صفحات مختلفة. على سبيل المثال ، في الأرشيف ، قد ترغب فقط في عرض مقتطفات من المنشورات ، بينما في صفحة المدونة الرئيسية ، قد ترغب في عرض منشورات كاملة (حتى ارتباط "قراءة المزيد"). لذلك ، تحتاج إلى أنواع مختلفة من الترميز ، ولهذا السبب لن تبدو الحلقة بنفس الشكل داخل home.php و archive.php .

كيفية إنشاء حلقة

من أجل إنشاء حلقة ، يمكنك أن تبدأ أساسًا بالكود البسيط الذي قمنا بشرحه أعلاه. هذه هي الحلقة المعيارية حقًا. ها هو مرة أخرى:

 if ( have_posts() ) : while ( have_posts() ) : the_post(); // Display content here endwhile; endif;

الجزء الصعب هو ما تركناه: الجزء الذي يحدد عرض المحتوى. لذلك ، كما ذكرنا ، عادة ما تستخدم مزيجًا من HTML و PHP. على سبيل المثال ، إليك كيفية إخبار WordPress بأن ينشر المنشور ملفوفًا في علامة <article> مع فئة ومعرف مخصصين ، والعنوان كعنوان h1 ، بالإضافة إلى الصورة والمحتوى المميزين.

 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <article <?php post_class(); ?>> <h1><?php the_title(); ?></h1> <?php the_post_thumbnail(); ?> <?php the_content(); ?> </article> <?php endwhile; endif; ?>

الشيء الوحيد الذي يبرز أعلاه هو أن هناك الكثير من العلامات المكتوبة بشرطة سفلية. هذه هي علامات قوالب WordPress ، والتي تقدم اختصارات للاتصال بأجزاء شائعة من المحتوى. هنا ، نستخدم the_title() لعرض عنوان المنشور ، the_post_thumbnail() للصورة المميزة ، و the_content() للمحتوى الرئيسي. هناك الكثير ، مثل the_excerpt() أو the_category() . يمكنك العثور على قائمة الخيارات هنا.

الشيء الآخر المهم بالنسبة إلى حلقة WordPress هو العلامات الشرطية. تراهم استخدموا كثيرًا في العلامات ذات الصلة بالحلقة لعرض شيء ما فقط في ظل ظروف معينة. على سبيل المثال ، من الشائع جدًا لف the_post_thumbnail() في عبارة شرطية لمنع WordPress من محاولة وضعه على الصفحة في حالة عدم وجود صورة مميزة.

 <?php if ( has_post_thumbnail() ): the_post_thumbnail(); endif; ?>

لدينا المزيد من الأمثلة أدناه. لمعرفة المزيد حول العلامات الشرطية ، تحقق من WordPress Codex.

أمثلة على WordPress Loop

كجزء أخير من هذا البرنامج التعليمي ، سنستعرض بعض الأمثلة حول كيفية استخدام حلقة WordPress.

الموضوع الحادي والعشرون

عند النظر إلى موضوع Twenty-One ، فإن أول ما يبرز هو الاستخدام المكثف لأجزاء القالب. تبدأ جميع ملفات القوالب القياسية مثل page.php و single.php وحتى index.php الحلقة داخل الملف ولكن بعد ذلك استخدم get_template_part تحميل عرض المحتوى إلى ملفات أخرى. في هذه الحالة ، هذا هو content-page.php ، و content-single.php ، و content.php على التوالي. إليك نسخة مختصرة من single.php كمثال:

 <?php get_header(); /* Start the Loop */ while ( have_posts() ) : the_post(); get_template_part( 'template-parts/content/content-single' ); // additional code for comments and post navigation endwhile; // End of the loop. get_footer();

هذا أيضًا مرئي في ملفات أخرى. على سبيل المثال ، يحتوي الرأس والتذييل أيضًا على أجزاء القالب الخاصة بهما. يمكنك أن ترى مراجع لمن بداخل الحلقة في أماكن أخرى. على سبيل المثال ، إذا نظرت إلى content-single.php ، يمكنك رؤية مكالمة إلى جزء قالب author-bio.php في النهاية.

 <article <?php post_class(); ?>> <header class="entry-header alignwide"> <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?> <?php twenty_twenty_one_post_thumbnail(); ?> </header><!-- .entry-header --> <div class="entry-content"> <?php the_content(); wp_link_pages( array( 'before' => '<nav class="page-links" aria-label="' . esc_attr__( 'Page', 'twentytwentyone' ) . '">', 'after' => '</nav>', /* translators: %: Page number. */ 'pagelink' => esc_html__( 'Page %', 'twentytwentyone' ), ) ); ?> </div><!-- .entry-content --> <footer class="entry-footer default-max-width"> <?php twenty_twenty_one_entry_meta_footer(); ?> </footer><!-- .entry-footer --> <?php if ( ! is_singular( 'attachment' ) ) : ?> <?php get_template_part( 'template-parts/post/author-bio' ); ?> <?php endif; ?> </article><!-- #post-<?php the_ID(); ?> -->

بصرف النظر عن ذلك ، إنه عادل قياسي نسبيًا:

  1. افتح عنصر <article> HTML مع معرف مخصص وفئة
  2. قم بإنشاء عنصر رأس المقالة الذي يخرج العنوان ملفوفًا في عنوان h1 ويعرض الصورة المميزة بوظيفة مخصصة لـ Twenty-One
  3. تابع ذلك باستخدام عنصر entry-content يحتوي على the_content() لإخراج محتوى منشور فردي
  4. قم بتضمين علامات ترقيم الصفحات وتذييل الإدخال مع وظيفة Twenty-One أخرى لعرض معلومات التعريف اللاحقة
  5. أخيرًا ، هناك الدعوة المذكورة أعلاه إلى السيرة الذاتية للمؤلف في جزء القالب الخاص بها

موضوع Twenty Ten WordPress الافتراضي

إذا عدت إلى أول سمة افتراضية على الإطلاق لـ WordPress ، وهي Twenty Ten ، واستخدمت مستودع التخريب للنظر في الملفات من الإصدار 1.0 ، يمكنك أن ترى كيف تطور التعامل مع ملفات الحلقة والقالب بمرور الوقت. في ذلك الوقت ، احتوت العديد من ملفات القوالب على حلقات WordPress الكاملة الخاصة بها بدلاً من الاستعانة بمصادر خارجية لأجزاء القالب القابلة لإعادة الاستخدام. يمكنك رؤية هذا بوضوح في صفحة الموضوع page.php .

 <?php get_header(); ?> <div> <div role="main"> <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <div <?php post_class(); ?>> <?php if ( is_front_page() ) { ?> <h2 class="entry-title"><?php the_title(); ?></h2> <?php } else { ?> <h1 class="entry-title"><?php the_title(); ?></h1> <?php } ?> <div class="entry-content"> <?php the_content(); ?> <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?> <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?> </div><!-- .entry-content --> </div><!-- #post-## --> <?php comments_template( '', true ); ?> <?php endwhile; ?> </div><!-- #content --> </div><!-- #container --> <?php get_sidebar(); ?> <?php get_footer(); ?>

يظهر الشيء نفسه أيضًا في onecolumn-page.php ، وهو ملف يتحكم في قالب صفحة مخصص يقدمه السمة. الجدير بالذكر أيضًا أنه يستخدم الاستدعاء الأقدم للحلقة والذي كان مكتوبًا في سطر واحد في ذلك الوقت.

 <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

في السمات الحديثة ، ترى أنها تنتشر على عدة أسطر كما رأينا سابقًا لزيادة قابلية قراءة الكود.

يحتوي نسق Twenty Ten أيضًا على ملف loop.php مستقل أطول من أن يتم تضمينه هنا دون تجاوز حد الكلمات الخاص بي. وهي مقسمة إلى ثلاثة أجزاء تتحكم في عرض عدة أنواع من المنشورات (معرض الصور ، منشورات من فئة Asides ، جميع المنشورات الأخرى). يتم تقسيم كل من هذه البيانات بشكل إضافي حسب عبارات if and else لحساب حالات مختلفة مثل صفحات الأرشيف والبحث.

 <?php while ( have_posts() ) : the_post(); ?> <?php /* How to display posts of the Gallery format. The gallery category is the old way. */ ?> // Lots of code here <?php else : ?> // Lots of code here as well <?php endif; ?> <?php /* How to display posts of the Aside format. The asides category is the old way. */ ?> // Even more code <?php /* How to display all other posts. */ ?> <?php else : ?> // Still more code <?php else : ?> // A bit more markup <?php endif; ?> // And a bit more code <?php endif; // This was the if statement that broke the loop into three parts based on categories. ?> <?php endwhile; // End of the loop. Whew. ?>

يحتوي الأمر برمته على منطق معقد جدًا وهذا هو سبب ظهوره طويلًا ومعقدًا إلى حد ما. يسعدني أن لدينا طرقًا أخرى للتعامل مع هذه الأمور اليوم وأوصيك بإلقاء نظرة عليها لمشاهدة مثال حلقة WordPress لا تريد محاكاته.

بالمناسبة ، إذا كنت تعتقد أنني أكون قاسية جدًا على المطورين منذ ذلك الوقت ، فكن مطمئنًا ، فهم يتفقون مع تقييمي. ما عليك سوى إلقاء نظرة على تعليق المطور حيث يغلق loop.php الحلقة.

 <?php endwhile; // End the loop. Whew. ?>

كتلة حلقة استعلام WordPress

قد لا تكون على دراية بذلك لأنها ميزة جديدة نسبيًا في Gutenberg ولكن محرر الكتلة (وبالتالي ، تحرير الموقع بالكامل) يحتوي الآن أيضًا على كتلة تحتوي على حلقة WordPress. يطلق عليه Query Loop Block ويمكنك إضافته إلى موقعك مثل أي كتلة أخرى. أسهل طريقة هي إضافة شرطة مائلة للأمام وكتابة اسمها مثل / queryloop . اضغط على Enter وسيظهر على الصفحة.

كتلة حلقة الاستعلام وورد

يسمح الحظر بإنشاء حلقة PHP دون الحاجة إلى كتابة التعليمات البرمجية. سيعرض تلقائيًا أحدث المشاركات على موقعك. إلى جانب ذلك ، لديها العديد من خيارات التخصيص. بادئ ذي بدء ، تأتي الكتلة مع عدد من التخطيطات المحددة مسبقًا. يمكنك إما التنقل خلالها عبر الأسهم أو النقر فوق خيار الشبكة لرؤيتها جميعًا مرة واحدة.

استعلام حلقة كتلة عرض الشبكة

اختر ما تريد أو انقر فوق " اختيار " إذا كنت قد وصلت إلى الخيار المفضل لديك لإنهاء الاختيار. من المهم أن نلاحظ أن التخطيطات تتكون من أنماط كتلة ، لذلك مجموعات مرتبة مسبقًا من الكتل المفردة. هذا يعني أيضًا أنه يمكنك ترتيبها بشكل مختلف حسب الحاجة ، فهي لا تزال كتل عادية. استخدم الأسهم أو انقر مع الاستمرار على خيار السحب لتحريكها في المكان الذي تريده.

بالإضافة إلى ذلك ، تأتي كل كتلة (وغالبًا كل مجموعة كتلة) مع خياراتها المعتادة في شاشة المحرر الرئيسية وفي الشريط الجانبي. هنا ، يمكنك تغيير ألوانها وأحجام خطوطها وتنسيقاتها والمزيد.

تكوين خيارات كتلة الاستعلام

بمجرد الرضا ، إذا قمت بنشر الصفحة أو معاينتها ، فسترى حلقة استعلام WordPress المخصصة تظهر عليها. لذا ، حتى لو لم تكن مطور WordPress ولا تفهم لغة PHP ، فلا يزال بإمكانك الاستفادة مما تقدمه الحلقة.

وأوضح حلقة ووردبريس في باختصار

الحلقة هي شيء يجب على أي محترف WordPress أن يكون على دراية به. ومع ذلك ، حتى لو كنت مستخدمًا عاديًا ، فلا يزال من غير الجيد فهم كيفية عمله. قد يسهل استكشاف المشكلات وإصلاحها أو إنشاء قوالب صفحات مخصصة إذا كنت ترغب في ذلك.

في هذا المنشور ، راجعنا ماهية الحلقة ، وأين توجد ، وقمنا بتقسيمها بالتفصيل. لقد ألقينا أيضًا نظرة على كيفية إنشاء حلقة وأمثلة خاصة بك من السمات الافتراضية وكتلة الاستعلام الجديدة. الآن ، أنت تعرف كل ما تحتاجه لإنشاء حلقة WordPress وتخصيصها.

ما هو استخدامك المفضل لحلقة الووردبريس؟ يرجى مشاركة أفكارك في التعليقات أدناه!

الصور: جوني جوس / أنسبلاش ، تاين إيفانيك / أنسبلاش