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

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

إنشاء custom-post-type

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

221148

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

لتنفيذ هذا الشيء أضف الكود التالي في داخل ملف functions.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' ); 

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

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

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

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

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

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

single-(custom-post-type).php

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

single-pictureofday.php

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

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

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

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

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

إذا ظهر لك خطأ 404 عند محاولتك الدخول لصفحة التصنيف في موقعك، تأكّد أنك أضفت الكود التالي في ملف functions.php ( راجع الخطوة رقم 1)

'has_archive' => true

هذا الكود مسئول عن إتاحة الأرشفة للمواضيع المخصّصة.

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

18 تعليق

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

  2. للاسف اخي رشيد عند تنفيذ ذلك بملف الـ functions.php
    يكون هناك خطأ:
    Fatal error: Call to undefined function add_action() in /home/xxx/public_html/wp-includes/functions.php on line 3881

    • عندما اقوم بحذف هذه الجملة
      add_action( ‘init’, ‘create_post_type’ );
      يعمل الموقع بشكل طبيعي
      ولكن لا تتم اضافة شيء

      ما هو الحل

          • أعتقد أن هناك سوء فهم هنا،، من نص الخطأ الذي أرفقته يبدوا أنك وضعت الكود في ملف الووردبريس wp-includes/functions.php و المطلوب أن تضعه في functions.php الخاص بالقالب.

        • انا ايضا اضفته في المكان الخطأ
          شكرا لردك الاخير والخاص بمكان وضع الدالة الصحيح

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

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

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

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

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

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

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

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *