شرح أساسي لطريقة إنشاء مواضيع مخصّصة (custom-post-type)

Custom post type هي عبارة عن وسيلة لإنشاء مواضيع مخصّصة، فبدلًا من إضافة كافة المواضيع داخل “تدوينات” يمكننا إنشاء قسم خاص في لوحة التحكّم يحتوي على المواضيع المخصّصّة التي نريد أن ننشئها. هذه الطريقة تساعدنا على تنظيم المحتويات في داخل لوحة التحكّم بشكل أفضل.

إنشاء custom-post-type

على سبيل المثال، أرغب بانشاء قسم جديد في موقعي وأريد أن أسميه “صورة اليوم”. شاهد المثال في الصورة التالية:

221148

نلاحظ في المثال أعلاه أنّ صورة اليوم أصبحت في قسم منفصل في داخل لوحة التحكم.

لتنفيذ هذا الشيء أضف الكود التالي في داخل ملف functions.php

[php] function create_post_type() {
register_post_type( ‘pictureofday’,
array(
‘labels’ => array(
‘name’ => __( ‘صورة اليوم’ ),
‘all_items’ => __( ‘كافة الصور’ ),
‘add_new’ => ‘أضف صورة جديدة’,
‘add_new_item’ => ‘أضف صورة جديدة’,
‘singular_name’ => __( ‘صورة اليوم’ )
),
‘public’ => true,
‘has_archive’ => true,
‘menu_position’ => 5,
‘supports’ => array( ‘thumbnail’ ),
‘rewrite’ => array(‘slug’ => ‘pictureofday’)
)
);
}

add_action( ‘init’, ‘create_post_type’ );
[/php]
هذا الكود هو عبارة عن كود أساسي، يمكنك دراسة الأمر بشكل مفصّل للتعرف على كافة المتغيرات المتاحة من خلال هذا الرابط.

للتوضيح، “pictureofday” هو اسم ال custom-post-type ويمكنك اختيار أي اسم آخر تريده.

بعد إضافة هذا الكود في ملف functions.php سيظهر لديك في لوحة التحكم قسم جديد كما هو موضّح بالصورة أعلاه.

تنسيق صفحة الـ custom-post-type

الآن لا أريد أن يكون شكل التدوينة هو نفس الشكل التقليدي لباقي التدوينات، بل أريد أن أمنح الصفحة التي تظهر فيها صورة اليوم تصميمًا خاصًا.

يمكن عمل ذلك بسهولة عن طريق إنشاء نسخة جديدة من الملف المسئول عن عرض التدوينة في موقعك (عادة يكون اسم الملف single.php) ثمّ حفظ الملف بالاسم:

[code]single-(custom-post-type).php[/code]

وذلك مع مراعاة تغيير (custom-post-type) إلى الاسم الذي اخترناه في الخطوة الأولى، أي سيصبح اسم الملف بالاعتماد على المثال في هذا الموضوع:

[code]single-pictureofday.php[/code]

يمكنك الآن التعديل على ملف single-pictureofday.php حتى تمنح صفحة صورة اليوم التصميم الخاص الذي ترغب به.

3. تنسيق تصنيف مواضيع الـ custom-post-type

أرغب أيضًا بمنح تصميم خاص لصفحة تصنيف الصور!

يمكنك أيضًا أن تمنح تصنيف المواضيع المخصّصة شكلًأ مختلفًا عن التصميم التقليدي للتصنيفات في موقعك.

سنقوم بتنفيذ نفس الفكرة في الخطوة رقم 2 لكن هذه المرة سيكون اسم الملف archive-(custom-post-type).php طبعًا مع مراعاة تغيير (custom-post-type) إلى الاسم الذي اخترناه في الخطوة الأولى، أي سيصبح اسم الملف بالاعتماد على المثال في هذا الموضوع archive-pictureofday.php

إذا ظهر لك خطأ 404 عند محاولتك الدخول لصفحة التصنيف في موقعك، تأكّد أنك أضفت الكود التالي في ملف functions.php ( راجع الخطوة رقم 1)
[code]’has_archive’ => true[/code]
هذا الكود مسئول عن إتاحة الأرشفة للمواضيع المخصّصة.

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

18 رأي حول “شرح أساسي لطريقة إنشاء مواضيع مخصّصة (custom-post-type)”

  1. الشرح ممتاز وواضح، لكن كان عندي سؤال طرحته سابقاً في المنتدى، وهو اذا قمت بعمل post type خاص فسأفقد الكثير، مثلاً لا يمكنني اضافة أي شيء من تطبيق ووردبرس للاندرويد أو الاي او اس، لأنه يدعم التدوينات فقط، وتظهر الاحصائيات في الصفحة الرئيسية للادارة للتدوينات فقط و….

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

    رد
  3. السلام عليكم
    شكرا لك أخي رشيد .
    لم يعمل عندي الكود بهذا الشكل ، وظهرت الصفحة فارغة كما في الصورة التي وضعها الأخ fajryassin :
    http://www.m5zn.com/newuploads/2013/05/01/jpg//27f2dbd08fb4104.jpg
    لكني استبدلت الكود :
    ‘supports’ => array( ‘thumbnail’ ),
    بالكود:
    ‘supports’ => array( ‘title’, ‘editor’, ‘author’, ‘thumbnail’, ‘excerpt’, ‘comments’ ),
    لدعم باقي الخدمات .

    رد
  4. بارك الله فيك يااخ رشيد موضوع الــ custom post type هام جدا ومهم لمن يريد استخدام الووردبريس كمجلة ادارة محتوى . حيث محتوى متعدد يختلف مابينها بطريقة العرض والخروج عن حدود التدوينات .

    لذلك اخ رشيد ارجو عمل تدوينة موسعة عن هذا الموضوع بارك الله فيك

    هذا الموضوع مهم لنجد االمطورين يتجهون للوردبريس لتصميم مواقع خارج حدود التدوينات والمقالات

    رد
  5. شكرا جزيلا لهذا الشرح الممتع
    الآن استطيع البحث عن دروس اجنبية مقتدمة بعدما حصلت منك على مفتاح الشرح
    ولكن لدي سؤال :
    هل استطيع حذف اسم القسم من رابط الموضوع الذي ساضيفه
    على سبيل المثال :
    قمت باضافة موضوعات متخصصة باسم services
    وعند اضافة خدمة جديدة لا اريد ان يكون عنوانها http://domain/services/hosting/
    بل اريد ان يكون الرابط مباشر http://domain/hosting/
    كما الحال في الموضوعات العادية بالمدونة

    رد

أضف تعليق