تخصيص جداول مسؤول WordPress: الشروع في العمل

نشرت: 2021-01-25

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

سنشرح في هذه المقالة كيف يمكنك القيام بذلك. هيا بنا نبدأ!

الخطاف

من أجل إظهار بيانات جداول الإدارة ، يقوم WordPress بتوسيع فئة WP_List_Table المدمجة. يتم تقديم فئة WP_List_Table كفئة خاصة في ملف wp-admin/includes/class-wp-list-table.php . يتم تسمية الفصول الخاصة بأنها خاصة لأنها مخصصة فقط للاستخدام من قبل الفئات والوظائف الأساسية الأخرى وليس من قبل المطورين.

يوفر لك WordPress القدرة على تغيير جداول الإدارة. لمعالجة أعمدة الجداول ، يجب عليك استخدام أحد عوامل التصفية التي يوفرها WordPress في ملف wp-admin/includes/class-wp-posts-list-table.php .

في هذا الملف ، تقوم فئة WP_Posts_List_Table بتوسيع فئة WP_List_Table وإعادة تعريف خصائصها وطرقها من أجل ملء جداول الإدارة وفقًا لنوع المنشور الخاص بها. يمكنك استخدام خطاف الإدارة management_posts_columns لجدول manage_pages_columns manage_posts_columns manage_{$post_type}_posts_columns إذا كنت تريد معالجة أعمدة جدول نوع المنشور المخصص.

الأعمدة المستخدمة بشكل افتراضي لبيانات الجدول موصوفة أيضًا في هذا الملف. حول السطر 616 تم تقديم مصفوفة $posts_columns الأعمدة التالية:

  • عمود مربع الاختيار "cb" للإجراءات المجمعة
  • عمود "العنوان" المنشور
  • عمود "المؤلف" لمؤلف المنشور
  • عمود "الفئات" للفئات التي ينتمي إليها المنشور
  • عمود "العلامات" للمنشور
  • عمود "التعليقات"
  • عمود "التاريخ" المنشور

إضافة عمود مخصص إلى جداول المسؤول

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

جداول قائمة المشاركات

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

للبدء ، يتعين علينا إضافة اسم العمود الجديد إلى مجموعة أسماء رؤوس الأعمدة. دعنا نلقي نظرة فاحصة على السطر 663 من ملف class-wp-posts-list-table.php .

 if ( 'page' === $post_type ) { $posts_columns = apply_filters( 'manage_pages_columns', $posts_columns ); } else { $posts_columns = apply_filters( 'manage_posts_columns', $posts_columns, $post_type ); }

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

 add_filter('manage_posts_columns','add_custom_columns'); function add_custom_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

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

ووردبرس] المشرف الجداول التخصيص الأساسي

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

ما سنفعله هنا بالفعل لملء المحتوى هو تشغيل بيان التبديل لجميع الأعمدة المخصصة ، وبما أن اسم الرأس هو "last_modified" (كما سجلناه في خطوتنا الأولية أعلاه) سنكرر المحتوى الخاص بنا. لتكرار المحتوى ، سنستخدم وظيفة get_post_field المضمنة في WordPress ونعيد الحقل المطلوب والذي يمكن أن يكون أي عمود من جدول wp_posts في قاعدة البيانات. في حالة حدوث فشل سيعود سلسلة فارغة.

سنضيف الكود أدناه في ملف functions.php :

 add_action( 'manage_posts_custom_column','custom_columns_content', 10, 2 ); function custom_columns_content ( $column_id, $post_id ) { switch( $column_id ) { case 'last_modified': echo get_post_field('post_modified', $post_id); break; } }

يمكنك التأكد من أن هذا يعمل بالشكل المتوقع عن طريق تحديث الصفحة مرة أخرى.

لاحظ أن قيمة "آخر تعديل" للمنشور الثاني والتي لم يتم تعديلها أبدًا بعد نشرها الأولي هي نفس تاريخ النشر.

جدول قائمة الصفحات

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

 add_filter('manage_pages_columns','add_custom_page_columns'); function add_custom_page_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

بعد ذلك سنضيف المحتويات باستخدام الخطاف manage_pages_custom_column بدلاً من manage_posts_custom_column الذي استخدمناه من قبل.

 add_action( 'manage_pages_custom_column','custom_columns_content', 10, 2 ); function custom_columns_content ( $column_id, $post_id ) { switch( $column_id ) { case 'last_modified': echo get_post_field('post_modified', $post_id); break; } }

بعد إدخال الكود أعلاه في ملف functions.php الخاص بنا ، يمكننا التأكد من أن الأشياء تعمل كما هو متوقع من خلال زيارة جدول مدير الصفحات في منطقة الإدارة الخاصة بنا حيث يجب أن نرى الآن عمود "آخر تعديل".

جدول نوع المنشور المخصص

سننشئ أولاً نوع منشور مخصص عن طريق إدخال الكود أدناه في ملف functions.php الخاص بنا:

 function my_custom_post_type() { register_post_type( 'mycpt', array( 'labels' => array( 'name' => __( 'Custom Post Types' ), 'singular_name' => __( 'Custom Post Type' ) ), 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'mycpt'), 'show_in_rest' => true, ) ); } add_action( 'init', 'my_custom_post_type' );

في قائمة المسؤول الخاصة بنا ، سنلاحظ إضافة عنصر جديد يسمى "نوع المنشور المخصص".

إذا كنت لا تعرف كيفية إنشاء أنواع المنشورات المخصصة وتريد معرفة المزيد ، يمكنك التحقق من مقالتنا ذات الصلة حول إنشاء أنواع منشورات مخصصة.

الآن لدينا إعداد نوع المنشور المخصص سيواصل إضافة رأس العمود الجديد بمحتواه. كما ذكرنا من قبل ، في حالة CPT (نوع المنشور المخصص) ، يتعين علينا استخدام manage_{$post_type}_posts_columns لإضافة عمودنا المخصص.

يجب أن يكون {$post_type} متطابقًا مع الوسيطة الأولى للدالة register_post_type() والتي تكون في هذه الحالة "mycpt".

إذن ، جزء الكود الذي سنستخدمه في ملف functions.php لإضافة رأس العمود الخاص بنا سيكون على النحو التالي:

 add_filter( 'manage_mycpt_posts_columns','add_mycpt_custom_columns'); function add_mycpt_custom_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

ولتعبئة محتوى العمود:

 add_action( 'manage_mycpt_posts_custom_column','fill_mycpt_posts_custom_column'); function fill_mycpt_posts_custom_column( $column_id, $post_id ) { switch( $column_id ) { case 'last_modified': echo get_post_field('post_modified', $post_id); break; } }

يجب أن تكون النتائج مثل هذا:

جعل الأعمدة قابلة للفرز

من أجل جعل العمود قابلًا للفرز ، يتعين علينا تحديد الأعمدة المخصصة التي يُسمح بفرزها. ولتحقيق ذلك نستخدم عامل التصفية manage_edit-{post-type}_sortable_columns مع وظيفة رد الاتصال.

لذلك ، في كل حالة من حالات نوع المنشور ، سنلحق نفس الرمز (مع أسماء وظائف فريدة بالطبع).

للمشاركات:

 add_filter( 'manage_edit-post_sortable_columns', 'sortable_post_columns' ); function sortable_post_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

للصفحات:

 add_filter( 'manage_edit-page_sortable_columns', 'sortable_page_columns' ); function sortable_page_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

بالنسبة لنوع منشوراتنا المخصصة (mycpt):

 add_filter( 'manage_edit-mycpt_sortable_columns', 'sortable_mycpt_posts_columns' ); function sortable_mycpt_posts_columns( $columns ) { $columns['last_modified'] = 'Last modified'; return $columns; }

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

تعطيل الفرز للأعمدة

لإزالة ميزة الفرز لعمود ما علينا فقط إزالته من المصفوفة. على سبيل المثال ، إذا أردنا القيام بذلك لعمود "التاريخ" ، فسنضيف سطرًا إضافيًا من الشفرة غير unset($columns['date']) . سيبدو هذا كالتالي:

للمشاركات:

 add_filter( 'manage_edit-post_sortable_columns', 'sortable_post_columns' ); function sortable_post_columns( $columns ) { $columns['last_modified'] = 'Last modified'; unset($columns['date']); return $columns; }

للصفحات:

 add_filter( 'manage_edit-page_sortable_columns', 'sortable_page_columns' ); function sortable_page_columns( $columns ) { $columns['last_modified'] = 'Last modified'; unset($columns['date']); return $columns; }

بالنسبة لنوع منشوراتنا المخصصة (mycpt):

 add_filter( 'manage_edit-mycpt_sortable_columns', 'sortable_mycpt_posts_columns' ); function sortable_mycpt_posts_columns( $columns ) { $columns['last_modified'] = 'Last modified'; unset($columns['date']); return $columns; }

الآن إذا قمت بزيارة الجدول المناسب ، ستلاحظ أن تسمية التاريخ لم تعد قابلة للنقر (وبالتالي لم يعد هذا العمود قابلاً للفرز).

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

وورد جداول المشرف هوكس

ربما لاحظت أن الخطافات التي نستخدمها لفرز الأعمدة لا تتبع النمط حقًا. كنت تتوقع منهم أن تكون manage_posts_sortable_columns ، manage_pages_sortable_columns ، manage_mycpt_posts_sortable_columns على التوالي. للأسف هذه مجرد مسألة تسمية سيئة. من المفيد جدًا مع ذلك الاحتفاظ بجدول ملخص مثل هذا كتذكير سهل.

تغيير عرض الأعمدة

لضبط عرض العمود ، سنستخدم خطاف الإجراء admin_head الذي يوفره WordPress وينفذه في قسم الرأس لجميع صفحات المسؤول التي تتضمن CSS أو JS.

على سبيل المثال ، حاول إدخال الكود أدناه في ملف functions.php :

 add_action('admin_head', 'my_column_width'); function my_column_width() { echo '<style type="text/css">'; echo '.table-view-list.posts .column-title { width:120px !important; overflow:hidden }'; echo '</style>'; }

هنا ، استخدمنا فئة .column-title لعمود العنوان وهو أمر شائع لجميع جداول الإدارة ، وفئات .table-view-list.posts . مجتمعة ، تضمن هذه العناصر أنه سيتم تطبيق CSS فقط في جدول قائمة المشاركات.

لتحقيق نفس الشيء لشاشات المسؤول الأخرى (مثل الصفحات) ، سنستخدم table-view-list.pages بدلاً من ذلك.

استنتاج

هناك الكثير من الاحتمالات عندما يتعلق الأمر بمعالجة أعمدة WordPress Admin Tables. سنستعرض في المقالات المستقبلية بعض الأمثلة الإضافية ونقدم بعض الحيل المفيدة التي يمكنك استخدامها لتحقيق المزيد من الاستفادة من جداول المسؤول!