إنشاء أنواع منشورات مخصصة
نشرت: 2016-08-23لم يكن WordPress مجرد منصة تدوين لبعض الوقت الآن. إحدى الميزات الرئيسية التي ساعدته في التحول إلى نظام مناسب لإدارة المحتوى (CMS) هي أنواع المنشورات المخصصة .
هذه هي المقالة الأولى من سلسلة من 3 أجزاء حول موضوع أنواع المنشورات المخصصة (CPT). هذه هي المواضيع التي سنناقشها في الموعدين التاليين:
- التصنيفات المخصصة
- عرض أنواع المنشورات المخصصة (القوالب والاستعلام)
ولكن في الوقت الحالي ، دعنا نلقي نظرة فاحصة على أنواع المنشورات المخصصة وكيفية إعدادها.
ما هو نوع المنشور المخصص؟
بشكل افتراضي ، يستخدم WordPress أنواع المنشورات التالية:
- بريد
- صفحة
- مرفق
- مراجعة
- عنصر القائمة
إذن ، ما هو نوع المنشور المخصص؟ نوع المنشور المخصص هو في الأساس منشور WordPress مع معلمات محددة مخصصة (حقول مخصصة ، بنية فئة / علامة مخصصة ، ...). الأمثلة الكلاسيكية لأنواع المنشورات المخصصة هي: الكتب والمراجعات والشهادات وأعضاء الفريق والمحافظ وما إلى ذلك. لكن يمكنك استخدامه لأي شيء يشير إلى نوع المحتوى الذي تنشئه.
لماذا تستخدم واحد؟
يمكنك فقط استخدام منشورات WP العادية واستخدام الفئات والعلامات ، لفصل "أنواع المنشورات" المختلفة. لكن هذا ليس مثاليًا ويمكن أن يؤدي إلى مضاعفات في المستقبل. فيما يلي بعض الأسباب التي قد تجعلك ترغب في استخدام نوع منشور مخصص:
- إذا كنت تريد فصل بعض المحتوى عن أنواع المنشورات الأخرى المتوفرة في WordPress
- أنت بحاجة إلى بعض الحقول المخصصة الحصرية للمحتوى الذي تريد نشره
- تحتاج إلى عرض المحتوى بشكل مختلف عن أنواع المنشورات الأخرى (مثل المنشورات أو الصفحات)
لنفترض أنك تكتب مدونة طعام. عادة ما تنشر انتقادات للمطعم ، ولكنك ترغب أيضًا في نشر وصفاتك الخاصة. ستعمل الوصفات على إنشاء نوع منشور مخصص مثالي ، لأنك ربما تحتاج إلى تنسيق مختلف عن المنشور العادي. ربما أيضًا بعض الحقول المخصصة ، مثل المكونات ، على سبيل المثال. مع تقديم وصفة CPT ، سيحتوي قسم المدونة فقط على المنشور العادي الخاص بك ، وسيكون لوصفاتك قسم خاص بها (صفحة أرشيف الوصفات الخاصة). هذا سيجعل الأمر أسهل للزوار الذين يريدون فقط إلقاء نظرة على وصفاتك.
في سلسلة المقالات هذه ، سننشئ شهادات CPT لموضوع Shaka الخاص بنا. لنفترض أن المستخدم يريد أن يكون لديه صفحة حيث يمكنه عرض شهادة كل عميل. إنه يريد إضافة بعض الحقول المخصصة إلى نوع المنشور المخصص هذا ويريد أيضًا تنسيقًا مختلفًا لعرض هذه الشهادات. دعنا أولاً نلقي نظرة على كيفية تسجيل نوع منشور مخصص.
كيف يمكنك إنشاء نوع منشور مخصص؟
هناك طريقتان لإنشاء نوع منشور مخصص جديد.
الخيار الأول هو استخدام ملحق يقوم بتسجيل نوع المنشور المخصص لك. هذه الطريقة جيدة للمستخدمين غير المعتادين على كود PHP. أنت تقوم فقط بإدخال التفاصيل المطلوبة ويقوم المكون الإضافي بالباقي.
الطريقة الثانية هي تسجيل نوع المنشور المخصص يدويًا . هذا يعني أنه يجب عليك كتابة بعض التعليمات البرمجية ، ولكن لا داعي للذعر ، فالأمر بسيط إلى حد ما وسأعرض لك أيضًا خدعة رائعة.
قم بإنشاء نوع منشور مخصص باستخدام مكون إضافي - الطريقة السهلة
إذا كنت ترغب في إضافة نوع منشور مخصص إلى موقعك بسرعة وسهولة ، فيجب عليك استخدام مكون إضافي يوفر هذه الوظيفة. من المحتمل أن يكون المكون الإضافي الأكثر شيوعًا للقيام بذلك هو Custom Post Type UI ، فهو مجاني وسهل الاستخدام. لنقم بإعداده:
- قم بتثبيت وتفعيل المكون الإضافي Custom Post Type UI من لوحة تحكم wp-admin ،
- بمجرد تنشيط المكون الإضافي ، سيكون عنصر قائمة مسؤول CPT UI متاحًا. انتقل إلى CPT UI -> إضافة / تحرير أنواع المنشورات ،
- ستجد هنا الكثير من الإعدادات التي يمكنك تطبيقها لتخصيص CPT الخاص بك. لن نتطرق إليها جميعًا بالتفصيل في هذه المقالة. ولكن يوجد رمز تلميح أداة بجوار كل تسمية إعداد لشرح ما يفعله كل إعداد. دعونا نحدد الأشياء التي نحتاجها لحالة الاستخدام الخاصة بنا (شهادة CPT) ،
- أدخل سبيكة: الشهادات ، وصيغة الجمع: الشهادات وعلامة المفرد: شهادة ،
- يمكنك النقر فوق الزر تحرير التسميات الإضافية لتعيين تسميات أكثر دقة. ولكن يمكننا تخطي ذلك والعودة مرة أخرى إذا رأينا مشكلة لاحقًا ،
- جميع الإعدادات الافتراضية مناسبة لحالة الاستخدام الخاصة بنا ، سنضيف فقط دعم الحقول المخصصة (حدد خانة الاختيار الحقول المخصصة في قسم الدعم) ،
- انقر فوق إضافة نوع المنشور لإنشاء نوع المنشور المخصص.
بمجرد إنشاء المنشور المخصص ، يظهر عنصر قائمة جديد في قائمة الشهادات wp-admin. يمكننا الآن إنشاء شهادات جديدة مع جميع الحقول التي تم تحديدها عندما أنشأنا نوع المنشور المخصص (العنوان والمحرر والصورة المميزة والحقول المخصصة).
يمكننا أيضًا تعيين تصنيف لنوع المنشور المخصص هذا ، لكننا سنغطي ذلك في المقالة التالية .
قم بإنشاء نوع منشور مخصص يدويًا - يتضمن الترميز
قد تسأل نفسك: إذا كان بإمكانك إنشاء نوع منشور مخصص باستخدام مكون إضافي ، فلماذا يرغب أي شخص في إنشائه يدويًا باستخدام رمز؟
من المؤكد أن القدرة على إنشاء واحد باستخدام مكون إضافي مريحة للغاية ، ولكن هناك حالات قد ترغب في القيام بذلك عبر الكود. على سبيل المثال ، إذا كنت تطور موقعًا لعميلك ولا تريد أن يتمكن العميل من تغيير هذه الإعدادات ، أو إذا كنت لا ترغب في تثبيت مكون إضافي آخر على موقعه. أيضًا ، إذا كنت ترغب في إنشاء سمة (أو سمة فرعية) لاستخدامها على مواقع متعددة ، فمن الأسهل تسجيل نوع المنشور المخصص في الرمز بدلاً من تكرار خطوات المكون الإضافي لكل موقع. هناك بعض الإيجابيات والسلبيات لكل طريقة ، لذلك عليك أن تقرر الأفضل في حالتك.

يمكن وضع الكود الخاص بإنشاء نوع منشور مخصص مباشرة في قالب (في function.php ). أو يمكنك إنشاء مكون إضافي جديد ووضع رمز CPT هناك. هذا أيضًا سؤال مثير للانقسام في مجتمع WordPress. يقول أحد الجانبين أنه يجب أن يكون موجودًا في المكون الإضافي ، بحيث إذا قمت بتغيير السمة ، تظل بيانات CPT (ولكن الإخراج غير منظم ولا يبدو جيدًا في المظهر الجديد). ويعتقد الجانب الآخر أنه من الأفضل وضع رمز CPT مباشرةً في السمة ، لأنه خاص بالموضوع ومصمم خصيصًا لهذا الموضوع.
أنا شخصياً أعتقد أنه من الأفضل دائمًا فصل النمط (السمة) عن الوظائف (المكونات الإضافية) وبالتالي فإن إنشاء مكون إضافي جديد لتسجيل CPT يعد خيارًا أفضل . من الأسهل إضافة نمط إلى السمة الجديدة لجعل إخراج CPT يبدو جيدًا بدلاً من فقدان بيانات CPT بسبب التبديل إلى سمة جديدة.
تسجيل نوع آخر مخصص مع رمز
لقد وعدت بخدعة رائعة ، أليس كذلك؟ حسنًا ، لا تحتاج في الواقع إلى كتابة رمز لتتمكن من تسجيل نوع منشور مخصص عبر رمز. قد يبدو هذا غريباً ، لكنه صحيح. يمكنك استخدام هذه الأداة على موقع generatewp.com لإنشاء الكود المطلوب لتسجيل CPT. كل ما عليك فعله هو إدخال بعض البيانات وإنشاء الكود. لقد فعلت هذا لحالة استخدام شهاداتنا وهذا ما خرج:
// Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );
... كود PHP صالح تمامًا يمكنك استخدامه في مشاريعك. كما تمت مناقشته من قبل ، يمكنك وضع هذا الرمز في مكون إضافي تم إنشاؤه حديثًا ، أو يمكنك وضعه في ملف jobs.php الخاص بالقالب. من أجل البساطة اخترت هذا الأخير. لقد وضعت هذا الرمز في ملف function.php للموضوع ، وظهرت قائمة الشهادات wp-admin ويمكنني الآن إنشاء شهادات جديدة (تمامًا كما في طريقة البرنامج المساعد أعلاه).
يمكنك أيضًا تعيين رمز مختلف لنوع المنشور المخصص ، والذي سيتم عرضه في قائمة wp-admin. تحتاج فقط إلى إضافة هذا السطر في المصفوفة $ args: 'menu_icon' => 'dashicons-businessman'
. يمكنك العثور على قائمة بجميع الرموز الممكنة هنا: WordPress Dashicons. (بفضل الإسكندر على هذه النصيحة).
دعنا نلقي نظرة فاحصة على الكود:
- يتم تغليف عملية تسجيل CPT بالكامل في
custom_post_type_testimonial()
، والتي يتم ربطها بخطافinit
WP في نهاية المقتطف مع سطر الكود هذا:add_action( 'init', 'custom_post_type_testimonials' );
. مكالمةadd_action
هذه هي المكالمة الأخيرة التي تحرّك كل شيء وتجعل WordPress يقوم بعمله السحري. - أول كتلة من الكود داخل الوظيفة عبارة عن مصفوفة من البيانات تسمى
$labels
، والتي تحتفظ بسلاسل الترجمة لنوع المنشور المخصص هذا. - الكتلة الثانية عبارة عن مجموعة من الوسائط المستخدمة لتسجيل CPT ، وهنا يمكنك تحديد جميع الإعدادات الخاصة بـ CPT. ما هي الحقول التي يجب أن تدعمها CPT ، إذا كانت مرئية للعامة ، موضع قائمة wp-admin ، إذا كانت تحتوي على صفحة أرشيف وما إلى ذلك. لرؤية المجموعة الكاملة من الخيارات ، يرجى زيارة صفحة كودك WP هذه.
- السطر الأخير من الوظيفة هو
register_post_type( 'testimonials', $args );
. سيؤدي هذا إلى تسجيل نوع المنشور المخصص "الشهادات" بالإعدادات التي حددناها في$args
أعلاه.
هذا هو! لقد سجلنا نوع منشور مخصصًا بقليل من كود PHP.
التحسين الوحيد الذي أود تغييره في الكود الذي تم إنشاؤه هو استخدام وظائف الهروب من التدويل. لذا بدلاً من _x()
و __()
esc_html_x()
و esc_html__()
. من الجيد دائمًا الهروب من قيم الإخراج - حتى سلاسل الترجمة - ولكن هذا موضوع لنشر مدونة أخرى.
المقالة التالية في السلسلة: كيفية إنشاء تصنيف مخصص.