جداول قائمة مسؤول WordPress: إضافة عوامل تصفية مخصصة

نشرت: 2021-02-26

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

ومع ذلك ، لا يوجد سوى عدد قليل من المرشحات. لذا ، ماذا تفعل إذا كنت تريد تصفية قيمة لا تحتوي على مربع تصفية في المسؤول؟ لحسن الحظ ، يسمح WordPress لنا بإضافة عوامل التصفية الخاصة بنا. سنرى كيف.

لماذا استخدام عوامل التصفية المخصصة ؟

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

استضافة موقع الويب الخاص بك مع Pressidium

ضمان استرداد الأموال لمدة 60 يومًا

اطلع على خططنا

يمكنك عرض كاتب المشاركات من جدول المسؤول دون أي تعديل. ما لا يمكنك فعله حاليًا هو فرز المشاركات حسب المؤلف. من الواضح أن هذا يعد قيدًا كبيرًا إذا كنت تريد أن تكون قادرًا على عرض جميع المنشورات التي كتبها مؤلف معين بسهولة. ما سيساعدك هو إذا كان بإمكانك عرض قائمة منسدلة لجميع مؤلفي المنشورات ثم تحديد واحد من القائمة. هذا يمكن حقا أن يسرع الأمور.

دعونا نلقي نظرة على كيفية بناء هذا.

إنشاء مرشحنا المخصص

لمساعدتك في إنشاء عوامل التصفية الخاصة بك ، يوفر WordPress restrict_manage_posts إدارة المواقع وخطافات pre_get_posts .

يتم تقديم " restrict_manage_posts " في ملف wp-admin/includes/class-wp-posts-list-table.php حول السطر 557 ويتم تشغيله قبل إنشاء زر تصفية أعلى قائمة جدول الإدارة.

سنستخدم وظيفة مخصصة وربطها بخطاف "إدارة restrict_manage_posts " كالمعتاد (ألق نظرة هنا لمزيد من المعلومات حول هذا الأمر). انتقل إلى المجلد الرئيسي لموضوعك النشط وافتح ملف functions.php باستخدام المحرر المفضل لديك. في نهاية محتويات الملف ، أدخل الكود أدناه:

 function my_author_filter(){ $screen = get_current_screen(); global $post_type; if( $screen->id == 'edit-post' ){ $my_args = array( 'show_option_all' => 'All Authors', 'orderby' => 'display_name', 'order' => 'ASC', 'name' => 'authors_admin_filter', 'who' => 'authors', 'include_selected' => true ); if(isset($_GET['authors_admin_filter'])){ $my_args['selected'] = (int)sanitize_text_field($_GET['authors_admin_filter']); } wp_dropdown_users($my_args); } } add_action('restrict_manage_posts','my_author_filter');

الشرط الرئيسي الذي استخدمناه هو if( $screen->id == 'edit-post') . استخدمنا هنا وظيفة get_current_screen() WordPress التي ترجع معرف الشاشة الذي نحن فيه.

في هذه الحالة ، يكون معرف شاشة المسؤول هو "تحرير النشر". بمعنى آخر ، نتأكد من أننا في شاشة إدارة المشاركات. على سبيل المثال ، إذا أردنا تطبيق هذا على شاشة مسؤول الصفحات التي يجب أن نستخدمها if( $screen->id == 'edit-page' أو إذا كنا نعمل لنوع منشور مخصص ، edit-{post_type} بيان إذا الصحيح.

ملاحظة: لمعرفة المعرف الذي يتوافق مع كل شاشة مسؤول ، يمكنك التحقق من الوثائق الرسمية حول مرجع شاشة المسؤول.

في الكود أدناه ، نتحقق مما إذا كان المؤلف قد تم تحديده بالفعل وإذا كان الأمر كذلك ، فإننا نطبق القيمة المحددة:

 if(isset($_GET['authors_admin_filter'])){ $my_args['selected'] = (int)sanitize_text_field($_GET['authors_admin_filter']); }

أخيرًا ، من خلال الاستفادة من وظيفة wp_dropdown_users WordPress ، سنقوم بإنشاء قائمة منسدلة بالمؤلفين وفقًا للحجج التي حددناها مسبقًا.

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

في حجة "من" نحدد أي نوع من المستخدمين للاستعلام ، في حالتنا "المؤلفون". باستخدام الوسيطة "include_selected" نختار ما إذا كنا نريد تضمين معرف المستخدم المحدد في القائمة المنسدلة.

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

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

تصفية النتائج

مرة أخرى ، سيقوم مرشح pre_get_posts بهذا العمل. لقد قمنا بفحص هذا الخطاف في مقالتنا WordPress Admin Search: تمديد النتائج. سنستخدم هذا مرة أخرى لتعديل كائن متغير الاستعلام الذي تم إنشاؤه في شاشة مسؤول النشر ، قبل تشغيل الاستعلام الفعلي. أدخل الأسطر التالية في ملف functions.php :

 function my_author_filter_results($query){ $screen = get_current_screen(); global $post_type; if ( $screen->id == 'edit-post' ) { if(isset($_GET['authors_admin_filter'])){ $author_id = sanitize_text_field($_GET['authors_admin_filter']); if($author_id != 0){ $query->query_vars['author'] = $author_id; } } } } add_action('pre_get_posts','my_author_filter_results');

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

$author_id = sanitize_text_field($_GET['authors_admin_filter']); يحافظ على هوية المؤلف المحددة في المتغير $author_id . بعد ذلك ، وإذا لم يكن معرف المؤلف 0 (تم تحديد جميع المؤلفين) ، فسنقوم بتمرير قيمة $author_id في معلمة مؤلف الاستعلام.

وهذا كل شيء. الآن ستكون المشاركات المعروضة هي فقط تلك التي تنتمي إلى المؤلف / معرف المستخدم المحدد.

استنتاج

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

على سبيل المثال ، قد ترغب في إنشاء قائمة تصفية منسدلة مع خيارات لعرض المنشورات التي تم إنشاؤها خلال آخر 30 يومًا أو ربما مرشحًا يقوم بفرز المشاركات حسب أي تصنيف. يمكن أن تساعدك قائمة query_vars على تبادل الأفكار حول الخيارات الممكنة !.

استمتع باللعب بهذه الميزة الرائعة!

أنظر أيضا

جداول قائمة مسؤول WordPress: إضافة عوامل تصفية مخصصة
الشروع في العمل مع حقول WordPress المخصصة