كيفية استخدام العلامات الشرطية في WordPress

نشرت: 2020-06-09

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

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

أود اليوم أن أخبركم عن العلامات الشرطية في WordPress: ما هي ، وكيفية استخدامها ، وما يمكن أن يكون مضللًا عنها ، ولماذا تكون مفيدة جدًا. إذا كنت تعمل كمكوِّن إضافي أو مطور قوالب ولا تعرفهم بعد ، فلا تفوّت هذه المشاركة.

ما هي العلامات الشرطية لـ WordPress؟

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

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

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

العلامات الشرطية الأكثر شيوعًا

تبدأ معظم العلامات الشرطية في WordPress بـ is_ ، لأن الإجابة على سؤال مثل "هل بلاه بلاه؟" هي قيمة منطقية: إما "نعم" أو "لا". لكن ، للأسف ، لا يتم اتباع هذا المعيار دائمًا (كما سنرى أدناه).

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

  • is_single . يتحقق مما إذا كان العنصر الحالي هو منشور WordPress أو مثيل من أي نوع منشور مخصص آخر (مثل ، على سبيل المثال ، منتج WooCommerce).
  • is_page . يتحقق مما إذا كان العنصر الحالي هو صفحة WordPress.
  • is_attachment . يتحقق مما إذا كان العنصر الحالي عبارة عن مرفق. المرفقات هي تلك الملفات التي تقوم بتحميلها إلى مكتبة الوسائط الخاصة بك ، مثل الصور ومقاطع الفيديو والملفات وما إلى ذلك.
  • is_singular . يتحقق مما إذا كانت أي من الوظائف الثلاث السابقة true . أي أنه يتحقق مما إذا كان العنصر الحالي منشورًا أو صفحة أو مرفقًا أو أي نوع منشور آخر.
  • comments_open . يعود true إذا كان بإمكان الزائرين التعليق على العنصر الحالي. يرى؟ هنا لديك مثال حيث لا تبدأ العلامة الشرطية بـ is_ .
  • is_category . يتحقق مما إذا كنا نبحث حاليًا في صفحة أرشيف فئة.
  • in_category . يعود صحيحًا إذا كانت المشاركة الحالية في فئة معينة.
  • is_tag . يتحقق مما إذا كنا نبحث حاليًا في صفحة أرشيف العلامات.
  • has_tag . يتحقق مما إذا كان المنشور الحالي قد تم تمييزه باستخدام العلامة المحددة.
  • is_main_query . يتحقق مما إذا كنا في الحلقة الرئيسية لـ WordPress.

هل تعلم أن هناك علامات شرطية يمكن أن تكون مضللة؟

هناك بعض الحالات التي تحتوي فيها العلامات الشرطية على أسماء يمكن أن تؤدي بنا إلى الارتباك لأن ما يبدو أنها تقيمه وما تقيمه بالفعل هما أشياء مختلفة:

  • is_admin . قد تعتقد أن هذه الوظيفة تتحقق مما إذا كان المستخدم الحالي مسؤولاً ، أليس كذلك؟ خاطئ - ظلم - يظلم! إنه يتحقق مما إذا كنا في صفحة داخل لوحة تحكم WordPress (وبعد ذلك ستكون النتيجة true ) أو في الواجهة الأمامية (أي false ).
  • is_home . كنت أعتقد أن هذه الوظيفة تتحقق مما إذا كانت الصفحة الحالية هي صفحتك الرئيسية. على سبيل المثال ، في موقعنا الإلكتروني ، سيكون https://neliosoftware.com . لكن لسوء الحظ ، هذا ليس هو الحال. وُلد WordPress كمنصة تدوين وأعتقد أن هذا مثال على بعض "التعليمات البرمجية القديمة". is_home هي وظيفة شرطية تتحقق مما إذا كانت الصفحة الحالية هي صفحة المدونة الخاصة بك. وبالتالي ، على سبيل المثال ، إذا كنت تستخدم الإعداد الافتراضي لـ WordPress ، فإن is_home يعود بالفعل true عندما يكون الزائر في الصفحة الرئيسية ( https://yourweb.com ) ، لأن هذه الصفحة تعرض أحدث منشورات المدونة الخاصة بك. ولكن إذا قمت بتعيين صفحة مدونتك على شيء آخر (مثل https://yourweb.com/blog ) ، فسيكون is_home true عندما يطلب الزائر https://yourweb.com/blog و false على خلاف ذلك.
  • is_front_page . وهذه هي العلامة الشرطية التي ستعلمك عندما يكون الزائر في "الصفحة الرئيسية".
  • is_dynamic_sidebar . تتحقق هذه الوظيفة مما إذا كان المظهر الخاص بك يحتوي على واحد أو أكثر من الأشرطة الجانبية لعناصر واجهة المستخدم ، وإذا كان كذلك ، فسوف يعود true إذا كان أحد هذه الأشرطة الجانبية على الأقل غير فارغ.

معلمة العلامات الشرطية

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

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

  • is_singular( 'product' ) يتحقق مما إذا كان العنصر الحالي منتجًا .
  • is_page( 'Contact Us' ) يتحقق مما إذا كان عنوان الصفحة الحالية هو "اتصل بنا". تقبل هذه الوظيفة أنواعًا مختلفة من الوسائط ، وبناءً على ما تقدمه ، ستتحقق من شيء أو آخر. على سبيل المثال ، يمكنك التحقق مما إذا كان العنصر الحالي يحتوي على معرف معين أو عنوان أو سبيكة ثابتة. أنيق جدا ، أليس كذلك؟ يمكنك حتى استخدام القوائم كمعلمات!
  • is_single( [ 5, 10, 11 ] ) يتحقق مما إذا كان معرف العنصر الحالي هو إما 5 أو 10 أو 11. إنه مشابه تمامًا لـ is_page ، ولكنه ، كما قلنا من قبل ، يعمل مع منشورات بخلاف الصفحة.

كيفية استخدام العلامات الشرطية

دعنا نلقي نظرة على بعض الأمثلة حيث قد تكون العلامات الشرطية مفيدة.

تخصيص القوالب

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

 <?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...

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

صفقات الأصول المشروطة

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

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

 function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

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

 function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

باختصار

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

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

صورة مميزة لجوستين لوبيك على Unsplash.