it-swarm.asia

أين أضع الكود الخاص بي: plugin or jobs.php؟

هل هناك مخطط سهل الفهم لتحديد نوع الكود الذي ينتمي إلى مكون إضافي أو functions.php للموضوع؟

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

يجب أن يوضح كيفية التعامل مع هذه النقاط (وربما أكثر):

  • أنواع الوظائف المخصصة والتصنيفات
  • أشكال الاتصال
  • الهاتفية القصيرة
  • الحاجيات المخصصة
  • add_theme_support( 'automatic-feed-links' );
  • يعمل SEO مثل عناصر meta المخصصة
  • تبديل الموضوع

غالبا ما يكون هناك إيجابيات وسلبيات لكلا الجانبين. حصل السؤال الأكثر شيوعًا لدينا { أفضل مجموعة من التعليمات البرمجية لملف function.php الخاص بك على الكثير من مقتطفات الشفرات كإجابات قابلة للنقاش على الأقل.
نحتاج إلى معايير يمكن للمبتدئين فهمها ، وربما قائمة مراجعة - مع أسباب.

راجع أيضًا السؤال ذي الصلة لـ Chip Bennett على موقع التعريف الخاص بنا: { الأسئلة التي تطالب بالتحديد بحل "بدون مكون إضافي"

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

86
fuxia

أود أن أبدأ بهذا السؤال: هل تتعلق الوظيفة بـ العرض للمحتوى أو توليد/إدارة للمحتوى أو للموقع أو بهوية المستخدم؟

إذا كانت الوظيفة غير مرتبطة على وجه التحديد بـ عرض المحتوى ، فستكون موجودة داخل إقليم البرنامج المساعد. هذه القائمة طويلة:

  • تعديل النواة WP المرشحات (wp_head المحتوى ، مثل الروابط الكنسي ، المولد وغيرها من HTML الفوقية ، الخ
  • موقع فافيكون
  • اختصارات ما بعد المحتوى
  • مشاركة روابط المشاركة
  • البرامج النصية من Google Analytics (وما شابهها)
  • أدوات سيو/الضوابط
  • إلخ.

إذا كانت الوظيفة مرتبطة بـ عرض المحتوى ، فهي مرشح لإدراجها في السمة. في هذه المرحلة ، أود الرجوع إلى معيار @ Raf912 الخاص بـ Theme-Switch : هل ستفقد الوظيفة عند تبديل السمات؟ إذا كانت الإجابة على هذا السؤال هي لا ، فإن الوظيفة تنتمي إلى السمة. بعض الأمثلة:

  • إزالة/تجاوز WP core معرض CSS
  • تصفية طول مقتطف المشاركة ، نص "قراءة المزيد" ، إلخ.
  • أي شيء يتم تنفيذه عبر add_theme_support() (أعتقد أن هذا يجب أن يكون واضحًا)
  • لغة تنسيق ويب حسب الطلب

عادة ، سوف يوفر هذان السؤالان خطًا واضحًا إلى حد ما للتمايز ؛ ومع ذلك ، هناك استثناءات.

أنواع الوظائف المخصصة

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

على المدى الطويل ، يتمثل حل هذا التباين ، IMHO ، في الحصول على اتفاقية/إجماع قياسي لتعريف CPT لأنواع معينة من المحتوى (قوائم العقارات ، أحداث التقويم ، منتجات التجارة الإلكترونية ، إدخالات مكتبة الوسائط/الكتب ، إلخ. .). وبهذه الطريقة ، سيظل المحتوى الذي تم إنشاؤه بواسطة المستخدم قابلاً للتنقل بين السمات التي تقوم بتنفيذ تعريف قياسي/اصطلاحي لمعرف CPT معين ، بينما يحتفظ مطورو السمات بالمرونة لتحديد تصميم/تخطيط/نمط ذلك CPT في ملفات قالب السمة.

روابط وسائل التواصل الاجتماعي

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

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

71
Chip Bennett

اختبار سهل حيث يتم وضع الكود بشكل أفضل:

  • اكتب الكود في الوظائف
  • تبديل الموضوع
  • هل تفتقد الوظيفة ، فهل المدونة لا تعمل بشكل صحيح أم أن أجزاء من السمة القديمة (على سبيل المثال الرموز المختصرة) تبقى؟

    • نعم: وضعها في البرنامج المساعد

    • لا: اتركه في وظائف

أمثلة: اكتب رمزًا قصيرًا. بعد تبديل السمة ، يتم ترك الرموز المختصرة البسيطة في مشاركاتك. لذلك سيكون في وضع أفضل في البرنامج المساعد.

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

يعتمد الأمر حقًا على الكود وما سيفعله. تؤثر بعض الشفرات فقط على التصميم أو المحتوى ، والبعض الآخر سيعدل مشاركات المدونة.

49
Ralf912

لا أعتقد أن هناك إجابة سهلة على هذا السؤال ، لكنني أراهن أنه يمكننا إعداد مخطط تدفق للمساعدة في اتخاذ القرار. إليك مخططًا تقريبيًا لمخطط التدفق هذا ، والذي يمكن وينبغي توسيعه. التعليق مع اقتراحات!

  • هل سيتم استضافة هذا الرمز على تثبيت موقع واحد من WordPress؟
    • نعم - هل يتغير مظهر الموقع فقط مع إعادة التصميم والتحولات في الوظائف؟
      • نعم - هل الكود المعني مخصص لهذا التصميم الحالي ؟
        • نعم: وظائف
        • لا: البرنامج المساعد
      • لا (يتغير في كثير من الأحيان أو في نزوة) - البرنامج المساعد
    • لا (Multsisite) - هل تستضيف التثبيت متعدد المواقع OR هل هو حل متعدد المواقع مستضاف يسمح بالإضافات؟
      • نعم: هل الوظيفة المعنية خاصة بهذا الموقع ، أو يمكن/يجب استخدامها من قبل المواقع الأخرى في الشبكة؟
        • خاص بهذا الموقع: jobs.php
        • مشترك بين مواقع متعددة - هل تريد فرضه على كل موقع؟
          • نعم: البرنامج المساعد ، المخزن في دليل الإضافات أو تنشيط الشبكة
          • لا: هل هذه شبكة من لا علاقة لها المواقع؟ (على سبيل المثال عملاء مختلفون) [.
            • نعم: هل سيكون سيئًا أو غير مهني إذا رأى العميل A أو قام بتنشيط المكون الإضافي الذي كتبته للعملاء B و C و D؟ (على سبيل المثال ، ربما يؤدي ذلك إلى كسر الموقع أو التسبب في وظائف غير مرغوب فيها)
              • نعم: وظائف
              • لا: البرنامج المساعد
            • لا: ربما البرنامج المساعد
      • لا (تستضيفه خدمة مثل VIP لا تسمح بالإضافات): use jobs.php
  • السمات الرئيسية - في بعض الأحيان مع الوظيفة المشتركة ، سيكون من الأفضل عمل سمة الأصل ووضع الوظيفة في ملف function.php الخاص بالنسق الأصلي.
  • يمكن أن تصبح أدلة المكونات الإضافية للتركيبات الكبيرة متعددة المواقع غير دقيقة بسرعة ، لذلك في بعض الأحيان يكون من الأفضل تكرار الوظائف المشتركة التي تستخدمها نسبة مئوية منخفضة من المواقع (على سبيل المثال <1٪) في ملفات function.php.
17
Matthew Boynes

من هنا السمات الإضافات VS

أضف رمزًا مخصصًا إلى سمة فرعية ، لذا عند تحديث السمة الأصل ، لا تضيع الشفرة المخصصة.

يمكنك أيضًا إنشاء مكون إضافي خاص بالموقع يحتوي على جميع التعليمات البرمجية المخصصة أيضًا.

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

 function modify_contact_methods($profile_fields) {

// Add new fields
$profile_fields['Twitter'] = 'Twitter Username';
$profile_fields['facebook'] = 'Facebook URL';
$profile_fields['gplus'] = 'Google+ URL';

return $profile_fields;
}
add_filter('user_contactmethods', 'modify_contact_methods');

http://codex.wordpress.org/Plugin_API/Filter_Reference/user_contactmethods

  1. إضافة نوع منشور مخصص جديد - رمز
  2. إضافة حقول جديدة إلى المستخدمين - الرمز أعلاه
  3. إضافة عناصر واجهة مستخدم جديدة - رمز
  4. إضافة الرابط الثابت المخصص - وورد إعدادات الرابط الثابت
5
Brad Dalton

أعلم أن هذا حصان ميت وأن Chip قام بتغطيته إلى حد كبير ، لكنه أراد إضافة بعض الأفكار.

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

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

يقال ، إذا كنت تعمل على وورد على أساس شبه منتظم ، يجب أن تفكر جديا في القيام بما يلي :


  1. بناء هيكل عظمي إضافي

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

إذا قمت بالوقت للقيام بذلك ، فستجد:

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

يمكنك الآن بناء الأشياء بشكل صحيح و إنجاز المشاريع المستقبلية بسرعة أكبر.


  1. بناء هيكل عظمي سمة

يجب أن يتعامل هذا مع كل ما هو مطلوب عادة في سمة:

  • ورقة أنماط أساسية تحتوي على أنماط تستخدمها بشكل شائع (إعادة التعيين ، إلخ.)
  • ملف index.php مناسب ، يتعامل مع كل ما تحتاجه لأي قالب
  • ملف jobs.php - لن تستخدمه كثيرًا تقريبًا ، لكنه سيظل في متناول يديك.

بمجرد الانتهاء من ذلك ، قم ببناء هيكل عظمي لطفل يستخدم السمة الأساسية.

  • أضف ورقة الأنماط ، مع الإشارة إلى موضوعك الرئيسي.
  • أضف ملف function.php

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


إذا قمت بما سبق ، فيمكنك العمل على ما يلي:

  • اقض وقت فراغك الجديد في التعرف على PHP و WordPress و JavaScript و CSS و/أو mySQL ... وكلما زادت معرفتك بهذه الأمور زادت سرعة إنجاز الأمور.
  • قم بتحديث الهيكل الإضافي للمكون الإضافي ، والموضوع ، والطفل الخاص بك عندما تجد أشياء يجب عليك تحسينها. بغض النظر عن مدى جودتك ، إذا واصلت التعلم ، فستجد تحسينات يجب إجراؤها.

وإذا فعلت كل ما سبق ، ستجد أن إجابة Chip لن تكون مثالية فحسب ، بل ستصبح مثالية.

4
Privateer

الجواب البسيط هو هذا ..

هل تعتمد الشفرة على أي وظيفة مضمنة في سمة معينة؟ إذا كانت الإجابة بنعم ، ثم وضعت في موضوع.

هل تريد تحويل هذا الرمز بين المواقع وبين السمات؟ إذا كانت الإجابة بنعم ، ثم وضعت في البرنامج المساعد.

إذا كانت الإجابة لا لكل مما سبق ، فصور الموقع بعد 5 سنوات في المستقبل ، عندما حان الوقت لإعادة التصميم. هل وظيفة الكود الذي تكتبه ستنجح في تحديث التصميم التالي؟ إذا كانت الإجابة بنعم ، ضع البرنامج المساعد.

أيضًا ، إذا كنت لا تستخدم السمات الفرعية وتعتزم تحديث السمة ، أقترح أيضًا استخدام مكون إضافي.

2
CO4 Computing