WordPress Meta_Query: كل ما تحتاج إلى معرفته

نشرت: 2022-04-30

واحدة من أقوى الأدوات في WordPress هي القدرة على إضافة حقول مخصصة إلى المنشورات. يستخدم العديد من المطورين الحقول المخصصة المتقدمة أو حقول التعريف المخصصة للمنشورات.

في هذا المنشور ، سنتناول كيفية الاستعلام عن المنشورات حسب الحقل المخصص باستخدام وظيفة meta_query في WordPress. هذا مفيد للمواقع التي تحتوي على الكثير من الوظائف المخصصة.


رسائل الاستعلام عن طريق قيمة التعريف

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

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'featured_post' ,
'value' => 'yes' ,
'compare' => '='
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value.php hosted with by GitHub

بالطبع سيختلف الكود أعلاه اعتمادًا على عنوانك للحقول ومفاتيح التعريف ولكن "المفتاح" هو اسم الحقل المخصص بينما "القيمة" هي ما نطلب منشورات عنه. يُستخدم حقل "المقارنة" لمجموعة من عمليات المقارنة التي سنتناولها لاحقًا في المنشور.

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


منشورات الاستعلام بقيم وصفية متعددة

إذا كنت تريد التحقق من قيمة مفتاح التعريف مقابل قيم متعددة ، فمن الأفضل استخدام عامل التشغيل "IN".

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value-multiple.php hosted with by GitHub

مشاركات الاستعلام عن طريق مفاتيح التعريف المتعددة

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

<?php
$ meta_query_args = array (
'meta_query' => array (
'relation' => 'AND' ,
array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
),
array (
'key' => 'featured_post' ,
'value' => true ,
'compare' => '='
)
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-meta-query-multiple-keys.php hosted with by GitHub

يمكن تعيين حقل "العلاقة" على "و" أو "أو" لذا يمكنك أن تطلب استيفاء جميع الشروط أو شرط واحد فقط.


عوامل تشغيل مقارنة الاستعلامات الوصفية

هناك عدد قليل من العوامل التي ستكون مفيدة في الاستعلام عن مشاركاتك عن طريق استعلام التعريف. فيما يلي تفصيل سريع لكل عامل مقارنة وكيف يمكنك استخدامه.

  • '=' للاستعلام عن مفاتيح التعريف التي تساوي قيمة meta
  • '! =' للاستعلام عن مفاتيح التعريف التي لا تساوي قيمة التعريف
  • ">" للاستعلام عن المفاتيح الوصفية الأكبر من القيمة الوصفية
  • '> =' للاستعلام عن المفاتيح الوصفية الأكبر من & تساوي القيمة الوصفية
  • '<' يستعلم عن مفاتيح التعريف الأقل من قيمة التعريف
  • '<=' للاستعلام عن مفاتيح التعريف التي تقل عن & تساوي قيمة التعريف
  • "LIKE" طلبات البحث عن المفاتيح الوصفية التي تحتوي على كلمة / عبارة (على سبيل المثال ، فإن طلب البحث عن كلمة "أحمر" يتطابق مع العبارات "أحمر" و "يبدو أحمر" و "أحمر ستايل")
  • "ليس مثل" عكس ما ورد أعلاه
  • يستعلم 'IN' مفاتيح التعريف حيث توجد القيمة في مصفوفة
  • يستعلم 'NOT IN' مفاتيح التعريف حيث لا توجد القيمة في مصفوفة
  • يستعلم "BETWEEN" مفاتيح التعريف حيث تكون القيمة بين رقمين
  • يستعلم "NOT BETWEEN" مفاتيح التعريف حيث لا تكون القيمة بين رقمين
  • يستعلم 'EXISTS' مفاتيح التعريف حيث توجد القيمة على الإطلاق
  • يستعلم "NOT EXISTS" المفاتيح الوصفية حيث لا توجد القيمة على الإطلاق
  • يستعلم "REGEXP" المفاتيح الوصفية بناءً على تعبير عادي
  • "NOT REGEXP" مقابل أعلاه REGEXP

كيفية فرز المشاركات حسب حقول التعريف

بالطبع يتيح لك WordPress فرز المنشورات باستخدام الحقول المخصصة الخاصة بك باستخدام خيار "orderby" في WP_Query. ستحتاج إلى تعيين "orderby" ليكون "meta_value" ثم تعيين قيمة "meta_key" لاسم الحقل الخاص بك. بشكل افتراضي ، يكون هذا مفيدًا للغاية عندما تريد أن يعود الاستعلام أبجديًا أو مرتبًا حسب الرقم عندما يكون الحقل الخاص بك رقمًا.

<?php
$ meta_query_args = array (
'post_type' => 'page' ,
'order' => 'ASC' ,
'meta_key' => 'city_name' ,
'orderby' => 'meta_value'
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-orderby-meta-query.php hosted with by GitHub