عرض أنواع المنشورات المخصصة - القوالب والاستعلام
نشرت: 2016-09-26هذه هي المقالة الثالثة والأخيرة من سلسلتنا حول أنواع المنشورات المخصصة (CPT). المواضيع التي ناقشناها في أول اثنين كانت:
- أنواع المنشورات المخصصة (كيفية إنشائها)
- التصنيفات المخصصة
في المادتين الأولى والثانية ، سجلنا نوع المنشور المخصص للشهادات والتصنيف المخصص testimonial_service . علينا الآن عرض الشهادات على موقعنا. لذلك سوف نلقي نظرة على كيفية إنشاء نموذج لشهاداتنا وكيفية الاستعلام عنها وكيفية عرضها في أي مكان على موقعنا.
قوالب نوع النشر المخصصة الافتراضية
لقد أنشأنا CPT الخاص بنا مع ضبط المعلمة has_archive
على true ، والتي ستعرض جميع الشهادات في صفحة أرشيف .
يستخدم WordPress تسلسلًا هرميًا للقالب لعرض أنواع مختلفة من المحتوى. بالنسبة لنوع المنشور المخصص ، سيبحث عن:
أرشيف- {post_type} .php
واحد- {post_type} .php
إذا لم يتم تحديد هذه القوالب في السمة ، فستبحث عن القوالب العامة:
أرشيف. php
مفرد. php
إذا لم يتم تعريف هذه القوالب ، فسيتم تعيينها افتراضيًا على قالب index.php .
في حالتنا ، يحتوي موضوع Shaka على single.php ، لكنه لا يحتوي على قالب archive.php . هذا يعني أنه سيستخدم ، بشكل افتراضي ، نموذج single.php لصفحة الشهادة الفردية. سيستخدم أيضًا نموذج index.php لعرض جميع الشهادات في صفحة أرشيف الشهادات.
سيتم عرض الشهادات في صفحة أرشيف الشهادات ، والتي ستكون موجودة في هذه الصفحة:
http://your-domain-goes-here.com/ ؟ post_type = الشهادات
إذا قمت بتمكين الروابط الثابتة الجميلة ، فيمكنك أيضًا الوصول إلى الصفحة باستخدام عنوان URL هذا:
http://your-domain-goes-here.com/ testimonials
(ملاحظة: إذا كانت الروابط الثابتة الجميلة لا تعمل من أجلك ، فانتقل إلى wp-admin -> الإعدادات -> الروابط الثابتة وقم بإعدادها بالطريقة التي تريدها وحفظ الإعدادات)
أولاً ، يجب أن نكتب بعض الشهادات في شهادات CPT المسجلة حديثًا ، لذلك لدينا بعض البيانات لعرضها. لقد أضفت 3 شهادات وهذه هي الطريقة التي يبدو بها التصميم الافتراضي لصفحة أرشيف الشهادات على موضوع Shaka الخاص بنا:
كما ترى ، فإن التخطيط على ما يرام ، لكن بعض البيانات المعروضة ليست ضرورية ، مثل "حسب المؤلف" والتاريخ. أيضًا لا يتم عرض التصنيف المخصص لـ testimonial_service ، لذلك سنضيف ذلك في قوالبنا المخصصة.
إنشاء قوالب مخصصة لـ CPT الخاص بنا
كما ذكرنا في القسم السابق ، يتعين علينا إنشاء نموذجين. the archive-testimonials.php و the single-testimonials.php . سننشئ فقط نموذج archive-testimonials.php لهذا المثال.
يجب أن ننشئ هذه الملفات في قالب فرعي ، ولكن من أجل البساطة ، سأضيف ملف archive-testimonials.php مباشرةً في سمة Shaka. سأقوم بنسخ ملف index.php ، والذي سيكون بمثابة نقطة بداية ، وسأعيد تسميته إلى archive-testimonials.php .
لقد أزلت "حسب المؤلف" ورمز التاريخ والشريط الجانبي. لقد أضفت الصور المميزة والتصنيف المخصص لخدمة الشهادات . لقد استخدمت الدالة the_terms
WP التي تعرض قائمة بمصطلحات WP محددة ، في حالتنا التصنيف المخصص.

أعلم أن الأمر لا يبدو رائعًا من الناحية الجمالية ، لكن هذا ليس هو الهدف. أردنا إنشاء هيكل / تخطيط مختلف لصفحة أرشيف الشهادات ببيانات مختلفة ، وقد تم تحقيق ذلك في بضع دقائق.
يمكننا أيضًا أن نفعل الشيء نفسه لصفحة الشهادات الفردية. سنقوم بنسخ ملف single.php وإعادة تسميته إلى single-testimonials.php وتغيير الكود من هناك.
لم أعرض أي رمز هنا لأن أمثلة التعليمات البرمجية ستكون مختلفة لكل سمة وهناك حاجة إلى بعض المعرفة الأساسية بـ HTML و PHP لقوالب التعليمات البرمجية. ولكن من الأسهل دائمًا تعديل قالب موجود ، ولهذا السبب استخدمنا index.php كنقطة انطلاق.
الاستعلام عن أنواع المنشورات المخصصة
هناك طريقة أخرى لعرض أنواع المنشورات المخصصة على موقعك وهي استخدام فئة WP_Query لجلب أنواع المنشورات المخصصة (تكرارها وعرضها).
لنفترض أنك تريد إنشاء عنصر واجهة مستخدم يعرض جميع الشهادات في دائرة. أو أنك قد ترغب في عرض الشهادات ذات الصلة (نفس تصنيف خدمة الشهادة) على صفحة شهادة واحدة. يمكنك استخدام فئة WP_Query
لاسترداد الشهادات ذات الصلة.
في مثالنا سنقوم بإحضار جميع الشهادات الموجودة في التصنيف المخصص لخدمة الشهادة "الغوص" وسنخرجها في قائمة:
<?php $args = array( 'post_type' => 'testimonials', 'post_status' => 'publish', 'tax_query' => array( array( 'taxonomy' => 'testimonial_service', 'field' => 'slug', 'terms' => 'diving' ) ) ); $testimonials = new WP_Query( $args ); if( $testimonials->have_posts() ) : ?> <ul> <?php while( $testimonials->have_posts() ) : $testimonials->the_post(); ?> <li><?php printf( '%1$s - %2$s', get_the_title(), get_the_content() ); ?></li> <?php endwhile; wp_reset_postdata(); ?> </ul> <?php else : esc_html_e( 'No testimonials in the diving taxonomy!', 'text-domain' ); endif; ?>
كما ترى في الكود أعلاه ، نقوم أولاً بإعداد مصفوفة إعدادات الوسيطة ، والتي يتم استخدامها لاحقًا في تهيئة WP_Query
. في هذه المصفوفة ، نحدد لاسترداد:
- "الشهادات" CPT ،
- الحصول على الشهادات المنشورة فقط ،
- احصل فقط على الشهادات الموجودة في التصنيف المخصص للغوص "testimonial_service".
عندما يتم استدعاء new WP_Query
، يتم استرداد الشهادات ذات الصلة ويمكننا تكرارها. في الحلقة نقوم ببساطة بإخراج العنوان (الذي استخدمته لاسم المؤلف) ومحتوى الشهادة في قائمة بسيطة. أيضًا ، يجب علينا دائمًا استخدام وظيفة wp_reset_postdata
، لإعادة التعيين مرة أخرى إلى الحلقة الأصلية ، عندما نستخدم حلقة WP_Query. سيضمن هذا أن كل شيء يعمل بعد أن ننتهي من استعلامنا المخصص.
كانت هذه هي أساسيات أنواع المنشورات المخصصة ، وآمل أن تفهم الآن كيفية عملها. كما هو الحال مع أي موضوع ، هناك دائمًا المزيد من التفاصيل التي يجب الخوض فيها. أنصحك بالاطلاع على وثائق WP الرسمية لجميع الوظائف والفئات التي استخدمناها في هذه الأمثلة. اسمحوا لي أن أعرف في قسم التعليقات أدناه ، إذا كان لديك أي أسئلة.