قم بإنشاء أنواع منشورات مخصصة لـ WordPress يدويًا

نشرت: 2020-12-15

في مقالتنا الأولى حول أنواع المنشورات المخصصة في WordPress ، استعرضنا كيف يمكنك بسهولة إنشاء أنواع المنشورات المخصصة الخاصة بك باستخدام البرنامج المساعد الممتاز Custom Post Type UI. في هذه المقالة الثانية سنلقي نظرة على كيفية القيام بذلك يدويًا (أي عن طريق الترميز). لذا ، لماذا إذا كان من السهل جدًا إنشاء نوع منشور مخصص باستخدام مكون إضافي ، فهل تريد القيام بذلك على المدى الطويل؟

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

على هذا النحو ، إذا كان بإمكانك كتابة التعليمات البرمجية في الوظائف مباشرة بدلاً من الاعتماد على مكون إضافي ، فهذا خيار جيد للنظر فيه.

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

قم بإنشاء نوع المنشور المخصص

إذا اتبعت برنامجنا التعليمي السابق ولا يزال لديك ملحق CPT UI مثبتًا ، فالرجاء إلغاء تنشيط هذا حتى لا يظهر التباس عند إنشاء CPT الجديد يدويًا.

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

الإعداد الأساسي

في الوقت الحالي ، سننشئ أنواع منشوراتنا مع الحد الأدنى من الوسائط باستخدام وظيفة register_post_type التي يوفرها WordPress.

 register_post_type( string $post_type, array|string $args = array() )

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

لغرض هذه المقالة سوف نستخدم الكود أدناه.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );

إذا كنت تتابع ، فقم بتشغيل محرر النصوص المفضل لديك وأضف هذا الرمز إلى ملف functions.php الخاص بك.

سترى في هذا الكود أننا استخدمنا مصفوفة "labels" لتعريف أسماء المفرد والجمع لنوع المنشور الخاص بنا ، وسيطة show_in_rest لتنشيط محرر Gutenberg لمنشورات الوصفات وكذلك الوسيطة public .

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

استخدمنا أيضًا وسيطة supports التي تحدد الميزات التي سيدعمها المنشور المخصص. في الوقت الحالي ، سنقوم فقط بتمكين "العنوان" و "المحرر" و "الصورة المصغرة" (سيتم عرض بعض الخيارات الإضافية في المقالات المستقبلية).

مع إضافة مقتطف الشفرة هذا إلى ملف jobs.php الخاص بنا وحفظه (احتفظ دائمًا بنسخة احتياطية من موقع الويب الخاص بك قبل القيام بعمل مثل هذا!) ، سترى الآن عنصر قائمة جديد تمامًا في WordPress Admin (في هذه الحالة "الوصفات").

بعد ذلك ، إذا توجهنا إلى المظهر> القوائم ، يمكننا تأكيد إضافة الوصفات كخيار. هذا يؤكد أن الأمور تسير كما ينبغي.

ملاحظة: إذا ذهبت إلى منطقة القائمة ولم ترَ عنصر قائمة "الوصفات" ، فمن المحتمل أنه لم يتم تحديده في خيارات الشاشة. للقيام بذلك ، توجه إلى أعلى الصفحة وافتح شريط خيارات الشاشة وتأكد من تحديد نوع المنشور المخصص الجديد (الوصفات في هذا المثال).

أضف التصنيف الخاص بك لنوع المنشور المخصص الخاص بك

توجد تصنيفات WordPress لتجميع محتوى مشابه. في هذه المرحلة ، لدينا منشورات مخصصة لـ "الوصفات" ولكن ليس لدينا القدرة على تصنيفها بالطريقة التي نريدها. على هذا النحو ، سيكون من المفيد إنشاء فئة منفصلة لوصفاتنا. دعنا على سبيل المثال نجمع الوصفات حسب نوع المطبخ الذي تنتمي إليه.

لتحقيق ذلك ، نحتاج إلى تسجيل تصنيف "مطابخ" جديد ثم ربطه بنوع منشور "الوصفات".

لإضافة التصنيف ، نستخدم الوظيفة register_taxonomy() التي يوفرها WordPress (انظر قائمة الوسائط هنا).

 register_taxonomy( string $taxonomy, $object_type, $args )

الوسيطات الإلزامية هي $taxonomy ، وهو مفتاح التصنيف ، و $object_type ، وهو نوع الكائن أو مصفوفة أنواع الكائنات التي يجب أن يرتبط بها التصنيف ، في حالتنا ، "الوصفات". في المعامل $arg ، سنقوم أيضًا بتضمين القيم الضرورية لتصنيف مثيلات المسؤول الخاصة بنا لتصنيفنا.

 function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );

تحدد show_admin_column المنطقية ما إذا كان التصنيف سيكون مرئيًا كعمود في جدول قائمة إدارة الوصفات أم لا.

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

يجب أن ترى أيضًا عمود "المطابخ" في جدول الوصفات:

عرض محتوى نوع المنشور المخصص الخاص بك على الواجهة الأمامية

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

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

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

سنقوم الآن بإنشاء عنصر قائمة آخر لـ "جميع الوصفات" باستخدام رمز مخصص لعرض أرشيف لجميع وصفاتنا.

قبل المتابعة ، يجب أن نتأكد من ضبط وسيطة أرشيف منشوراتنا المخصصة على true. ارجع إلى الكود الخاص بك في functions.php حيث تسجل نوع الوصفات وأضف 'has_archive' => true, في مصفوفة الوسائط.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );

بعد ذلك ، انتقل إلى الإعدادات> الروابط الثابتة وأعد الحفظ للتأكد من عدم حصولك على خطأ 404 (كما ذكرنا سابقًا).

الآن في صفحة إنشاء القائمة ، أضف الارتباط المخصص لصفحة الأرشيف. يمكن أن يكون نص الرابط "كل الوصفات".

يجب أن يكون عنوان URL هو "/؟ post_type = recipes" ، إذا تم تعيين الروابط الثابتة على "Plain" و "/ recipes /" إذا تم تعيين الروابط الثابتة على "Post name".

أضف عنصر القائمة وانتقل إلى موقع الويب الخاص بك وانقر فوق الارتباط الخاص به. يجب أن تشاهد الآن جميع منشورات الوصفات في طريقة عرض الأرشيف.

قراءة متعمقة

  • قم بإنشاء أنواع منشورات مخصصة لـ WordPress باستخدام البرنامج المساعد
  • أنواع منشورات WordPress المخصصة - أخذها إلى أبعد من ذلك
  • قم بإنشاء أنواع منشورات مخصصة لـ WordPress باستخدام البرنامج المساعد الخاص بك!

استنتاج

قد تبدو طريقة التعامل مع أنواع المنشورات المخصصة التي فحصناها في هذه المقالة مربكة في البداية (خاصة عند مقارنتها بسهولة إنشاء أنواع منشورات مخصصة باستخدام مكون إضافي). إذا كنت على استعداد للمثابرة ، فإن ترميز أنواع المنشورات المخصصة الخاصة بك له مزاياه وهي أنك لا تعتمد على مكون إضافي إذا توقف هذا المكون الإضافي عن العمل أو أصبح غير مدعوم.