احصل على منشور مفرد باستخدام قيمة حقل مخصص من رابط
عند العمل مع أنظمة إدارة المحتوى، مثل ووردبريس، قد تحتاج أحيانًا إلى عرض مقالات محددة بناءً على قيم معينة مخزنة في الحقول المخصصة. إحدى هذه السيناريوهات هي الرغبة في جلب مقالة باستخدام معرف فريد يمرر عبر معلمات الاستعلام في عنوان URL. في هذا المقال، سنستعرض كيفية جلب مقالة واحدة بناءً على قيمة حقل مخصص باستخدام معلمات استعلام URL.
فهم المشكلة
عندما تريد عرض مقالة معينة تحتوي على حقل مخصص مثل "member_id" يمكن أن يكون لديك عندما ينقر أحد الزوار على رابط يحتوي على معرف العضو، مثل: https://my-site/my-post-type/?mid=123456
. هنا، المطلوب هو استخدام قيمة mid
لعرض المقالة الصحيحة بناءً على القيمة المخزنة.
تكوين الوظيفة المناسبة
الخطوة الأولى هي كتابة دالة تمكّننا من تصفية نتائج الاستعلام عند تحميل الصفحة. نبدأ بإنشاء دالة جديدة، حيث نتحقق من وجود قيمة mid
في معلمات الاستعلام، ثم نستخدمها لضبط استعلام ووردبريس. الإعداد الأساسي سيكون كما يلي:
function my_pre_get_posts( $query ) {
if( isset($_GET['mid']) ) {
$query->set('meta_key', 'member_id');
$query->set('meta_value', $_GET['mid']);
}
}
add_action('pre_get_posts', 'my_pre_get_posts');
هذا الرمز يقوم بتصفية الاستعلامات قبل تظهر النتائج. ومع ذلك، قد تواجه مشكلة مع عرض المقالة الصحيحة إذا كانت الإعدادات غير مضبوطة. لذا، تحتاج أيضًا إلى التأكد من أن هذه الفلترة تتم على الصفحات الواحد منها وليس فقط في الصفحات الأرشيفية.
حل المشكلة في عرض الصفحة الواحدة
يمكن تعديل الدالة my_pre_get_posts
للعمل مع صفحات واحدة، مما يجعل من الممكن استبدال mid
بمطابق لمدخلات المقالة. عليك التأكد أن الكود يتعامل مع is_single()
للتأكد من أن العرض المحدد يتم فقط للمقالة المفردة. يمكنك تعديل الأقل من الشيفرة كما يلي:
function my_pre_get_posts( $query ) {
if ( !is_admin() && $query->is_main_query() && is_single() && isset($_GET['mid'])) {
$query->set('meta_key', 'member_id');
$query->set('meta_value', sanitize_text_field($_GET['mid']));
}
}
add_action('pre_get_posts', 'my_pre_get_posts');
هذا التعديل يتأكد من أن الفلترة ستعمل فقط حين تكون الصفحة واحدة، مما يساعدك على عرض المقال المقصود بشكل دقيق.
استنتاج
عند استخدام الحقول المخصصة لجلب محتوى معين بناءً على قيم فريدة من عنوان URL، فإن استخدام pre_get_posts
يعتبر طريقة فعالة وسريعة. من خلال هذه الطريقة، يمكنك تخصيص طريقة عرض المحتوى لديك بسهولة، مما يعزز التجربة للمستخدمين على موقعك. بناءً على ما تم شرحه، يمكنك استخدام هذه التقنية في مجموعة متنوعة من التطبيقات والمواقع، مما يجعلها ذات فائدة كبيرة لمطوري ووردبريس.
بهذه الطريقة، يمكنك استغلال معلمات الاستعلام لجلب محتوى واحد بناءً على قيم الحقول المخصصة بشكل سلس.