Custom post type هي عبارة عن وسيلة لإنشاء مواضيع مخصّصة، فبدلًا من إضافة كافة المواضيع داخل “تدوينات” يمكننا إنشاء قسم خاص في لوحة التحكّم يحتوي على المواضيع المخصّصّة التي نريد أن ننشئها. هذه الطريقة تساعدنا على تنظيم المحتويات في داخل لوحة التحكّم بشكل أفضل.
جدول المحتويات
إنشاء custom-post-type
على سبيل المثال، أرغب بانشاء قسم جديد في موقعي وأريد أن أسميه “صورة اليوم”. شاهد المثال في الصورة التالية:
نلاحظ في المثال أعلاه أنّ صورة اليوم أصبحت في قسم منفصل في داخل لوحة التحكم.
لتنفيذ هذا الشيء أضف الكود التالي في داخل ملف 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]
هذا الكود مسئول عن إتاحة الأرشفة للمواضيع المخصّصة.
أتمنى أن تكون هذه التدوينة المختصرة والمبسطة طرف خيط لفهم فكرة المواضيع المخصّصة وللعمل على تطويرها في موقعك وفق احتياجاتك.
الشرح ممتاز وواضح، لكن كان عندي سؤال طرحته سابقاً في المنتدى، وهو اذا قمت بعمل post type خاص فسأفقد الكثير، مثلاً لا يمكنني اضافة أي شيء من تطبيق ووردبرس للاندرويد أو الاي او اس، لأنه يدعم التدوينات فقط، وتظهر الاحصائيات في الصفحة الرئيسية للادارة للتدوينات فقط و….
بعد الإضافة والتجربة وجدت خصائص كثيرة غير مضافة مثل التصنيفات والوسوم ،
وبعد إضافة الوسوم والتصنيفات أيضا وجدت أنه لإظهار أي من مواضيع هذا النوع المخصص تحتاج لإضافة أكواد.
يعني مواضيع هذا القسم لا تظهر في الرئيسية ولا في أي مكان،
كذلك أقسامه لا يظهر فيها شيء بعد الضغط عليها
لذلك فالموضوع طويل ويحتاج بحث طويل وجهد كبير
السلام عليكم
شكرا لك أخي رشيد .
لم يعمل عندي الكود بهذا الشكل ، وظهرت الصفحة فارغة كما في الصورة التي وضعها الأخ fajryassin :
http://www.m5zn.com/newuploads/2013/05/01/jpg//27f2dbd08fb4104.jpg
لكني استبدلت الكود :
‘supports’ => array( ‘thumbnail’ ),
بالكود:
‘supports’ => array( ‘title’, ‘editor’, ‘author’, ‘thumbnail’, ‘excerpt’, ‘comments’ ),
لدعم باقي الخدمات .
بارك الله فيك يااخ رشيد موضوع الــ custom post type هام جدا ومهم لمن يريد استخدام الووردبريس كمجلة ادارة محتوى . حيث محتوى متعدد يختلف مابينها بطريقة العرض والخروج عن حدود التدوينات .
لذلك اخ رشيد ارجو عمل تدوينة موسعة عن هذا الموضوع بارك الله فيك
هذا الموضوع مهم لنجد االمطورين يتجهون للوردبريس لتصميم مواقع خارج حدود التدوينات والمقالات
شكرا جزيلا لهذا الشرح الممتع
الآن استطيع البحث عن دروس اجنبية مقتدمة بعدما حصلت منك على مفتاح الشرح
ولكن لدي سؤال :
هل استطيع حذف اسم القسم من رابط الموضوع الذي ساضيفه
على سبيل المثال :
قمت باضافة موضوعات متخصصة باسم services
وعند اضافة خدمة جديدة لا اريد ان يكون عنوانها http://domain/services/hosting/
بل اريد ان يكون الرابط مباشر http://domain/hosting/
كما الحال في الموضوعات العادية بالمدونة
بارك الله فيك اخ نشوان فعلا انا وضعتها في الملف الرئيسي وعند وضعها في ملف القالب اشتغلت تمام
المشكلة الان انه لا يقرأ اللغة العربية
وتأتي علامات استفهام بدل الكلمات العربية
الحمد لله تم العمل بشكل سليم وهو شغال تمام
ولكن ايضا هناك مشكلة اخواني
لا يمكنني اضافة شيء
وهذه صورة توضيحية
http://www.m5zn.com/newuploads/2013/05/01/jpg//27f2dbd08fb4104.jpg
خلاص اخواني بارك الله فيكم
تم حل المشكلة بالرجوع الى الصفحة المتابعة على الووردبريس ووجدت الحلول التي أريدها
كيف تم حل المشكله حصلت معي و لم استطع حلها ؟؟
للاسف اخي رشيد عند تنفيذ ذلك بملف الـ 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’ );
يعمل الموقع بشكل طبيعي
ولكن لا تتم اضافة شيء
ما هو الحل
هل أنت متأكّد أنك اضفت الكود بشكل صحيح لملف functions ؟
جربت تطبيق ذلك في القالب الافتراضي بدون اضافات ؟
نعم أخي رشيد اضفت الكود الذي وضعته انت في اخر الملف
وطلع الخطأ
سؤال:
هذه هذه الاضافة تفي بالغرض
Custom Post Type UI
أعتقد أن هناك سوء فهم هنا،، من نص الخطأ الذي أرفقته يبدوا أنك وضعت الكود في ملف الووردبريس wp-includes/functions.php و المطلوب أن تضعه في functions.php الخاص بالقالب.
انا ايضا اضفته في المكان الخطأ
شكرا لردك الاخير والخاص بمكان وضع الدالة الصحيح
يا سلام عليك يا رشيد، دائماً أحب معرفة هذه الإضافات وكيفية عملها، كل الشكر من أعماق القلب على التدوينة الرائعة متمنياً المزيد من التقدم والنجاح