Anonim

انهيار سريع

  • query_posts - لا تستخدم إلا في حالات الحواف النادرة
  • pre_get_posts - استخدم إذا كنت تريد تغيير الاستعلام الافتراضي على الصفحة
  • WP_Query الجديد - استخدم للحصول على نتائج مختلفة من الاستعلام الرئيسي
  • get_posts - مثل WP_Query ، فقط يعرض النتائج بتنسيق الصفيف بدلاً من ذلك
  • query_posts

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

    pre_get_posts

    هذا مرشح. هذا يعدل الاستعلام الرئيسي إلى صفحة. لذلك ، على سبيل المثال ، نريد تغيير عدد النتائج التي يتم إرجاعها على الصفحة الرئيسية …

function tj_change_home_number ($ query) {if (is_home ()) {$ query-> set ('posts_per_page'، 2)؛ إرجاع؛ }} add_action ('pre_get_posts'، 'tj_change_home_number')؛

سيؤدي ذلك إلى تغيير الاستعلام الرئيسي لإرجاع منشورين فقط على الصفحة الرئيسية.

WP_Query

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

get_posts

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

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

مرجع:
WP_Query
pre_get_posts
query_posts
get_posts

Wp_query vs query_posts مقابل get_posts مقابل pre_get_posts