ما هي الوسوم الشرطية (Conditional Tags) في ووردبريس

لعل أبرز ما يميز نظام إدارة المحتوى ووردبريس هو احتواؤه على الكثير من الميزات التي تسهل على المطورين كتابة وتنفيذ الأكواد وفي مقال اليوم سأشرح أحد هذه الميزات الهامة والتي ينبغي على أي مطور قوالب تعلمها وهي الوسوم الشرطية أو العلامات الشرطية (Conditional Tags).

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

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

ما هي الوسوم الشرطية (Conditional Tags) في ووردبريس

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

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

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

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

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

تستدعى الوسوم الشرطية بالشكل التالي:

<?php
if (وسم شرطي ):
    // الكود المكتوب هنا ينفذ فقط عندما يعيد الوسم الشرطي قيمة صحيحة  
endif; ?>

على سبيل المثال لتنفيذ كود معين عندما تكون في أي صفحة ثابتة في موقعك سيكون الكود بالشكل التالي:

<?php
 if (is_page() ): 
 echo 'This is a page'; // الكود ينفذ فقط عندما  نكون ضمن صفحة ثابتة ضمن الموقع 
 endif;
?>

أشهر الوسوم الشرطية في ووردبريس

يمتلك نظام ووردبريس أكثر من 50 وسم شرطي مضمن فيه، وتجدر الإشارة لأن معظم الوسوم الشرطية في ووردبريس تملك البادئة is_ ويليها اسم معبر عن طريقة عملها، وإن كان هناك بعض الوسوم الشرطية تملك البادئة has_ ​​وبعضها لا يملك أي بادئة قبل الاسم.

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

  • is_single ():يعيد هذا الوسم قيمة صحيحة true إذا كانت الصفحة التي يتم عرضها حاليًا مكونة من منشور مفرد مهما كان نوعه (ماعدا النوعين صفحة page ومرفقات attachment).
  • is_page (): يعيد هذا الوسم قيمة صحيحة true عند عرض صفحة ثابتة في الموقع.
  • is_attachment(): يعيد هذا الوسم قيمة صحيحة true عند عرض أي مستند أو ملف مرفق تم تحميله ضمن مقال أو صفحة ما.
  • is_singular (): مشابه للوسم is_single () ولكنه يعيد القيمة true عند عرض أي منشور مهما كان نوعه فهو مكاقئ لاستخدام الوسوم الثلاثة السابقة مع بعضها البعض بالشكل التالي:
<?php
if (is_single () || is_page () || is_attachment () ):
    // الكود المكتوب هنا ينفذ من أجل أي منشور مفرد مهما كان نوعه  
endif; ?>
  • is_search() : يعيد هذا الوسم قيمة صحيحة true عند عرض صفحة لنتائج البحث في الموقع.
  • is_archive (): يعيد هذا الوسم قيمة صحيحة إذا كانت الصفحة الحالية تعرض أرشيف (سواء لوسم، أو تصنيف أو مؤلف، أو تاريخ.. )
  • is_home (): يعيد هذا الوسم true عندما تكون الصفحة الرئيسية لموقعك هي صفحة المدونة. وكما تعرف يمكنك إعداد موقع ووردبريس بحيث يعرض على الصفحة الرئيسية إما مقالات المدونة أو صفحة ثابتة.
    وبالتالي في هذه الحالة إذا كان موقعك معد ليعرض مقالات المدونة على الصفحة الرئيسية فإن الوسم سيعيد القيمة صحيح true في دليل مدونة الموقع (domain.com/blog) وسيعيد القيمة خطأ false على الدليل الرئيسي للموقع (domain.com).

مثال:

<?php 
if( is_home() ):
echo 'User is on the Homepage!';
else: echo 'User is not on the Homepage!';
endif; 
?>
  • is_front_page (): يعيد هذا الوسم القيمة true إذا كنت في الصفحة الرئيسية الثابتة لموقعك، أو إذا كنت في صفحة مدونتك عندما لا تستخدم صفحة ثابتة كصفحة رئيسية. أي هذا الوسم يبحث عن الصفحة التي تم تعيينها لتكون الصفحة الرئيسية لموقعك بغض النظر عما إذا كانت صفحة ثابتة أم لا. وتكون قيمته دائمًا صحيحة على الدليل domain.com بغض النظر الصفحة المعروضة.
  • is_main_query (): يعيد هذا الوسم القيمة true إذا كان الاستعلام الحالي هو الاستعلام الرئيسي للصفحة.
  • is_404(): يعيد هذا الوسم قيمة صحيحة عند وقوع الخطأ 404 في الموقع والانتقال للصفحة المخصة للعرض عند وقوع هذا الخطأ.
  • is_author(): يعيد هذا الوسم القيمة true إذا كنت نستعرض صفحة الكاتب في الموقع.
  • is_admin (): يعيد هذا الوسم true عندما تكون في الواجهة الخلفية لموقعك، أي في لوحة تحكم أدمن موقعك الووردبريس وانتبه هنا ليس بالضرورة أن يملك المستخدم هنا صلاحية الأدمن بل المهم أن يكون ضمن لوحة تحكم الموقع حتى لو كان يملك صلاحية مستخدم آخر (فالوسم current_user_can('administrator') هو الذي يتحقق من كون المستخدم يملك صلاحية أدمن)
  • is_dynamic_sidebar (): يعيد true إذا كان أي من الأشرطة الجانبية الخاصة بالقالب أو ما يعرف بمناطق عرض الودجات تملك ودجات نشطة.
  • has_excerpt(): يعيد true إذا كان المقال الحالي يملك مقتطف
  • has_tag():يعيد true إذا كان المقال الحالي يملك وسوم
  • is_sticky ():يعيد true في حال تم تعريف منشور ما على أنه منشور مثبت.
  •  is_category(): يحدد ما إذا كنا ننفذ استعلام في صفحة أرشيف لها تصنيف معين.

يمكنك كذلك دمج أكثر من وسم شرطي من خلال استخدام المعاملات المنطقية Logical Operators مثل المعامل && الذي ينفذ التعليمات عندما تكون كافة الشروط معًا (قيمتها true)، أو المعامل || الذي ينفذ التعليمات عندما يكون أحد الشروط على الأقل محقق، أو معامل نفي الشرط ! الذي ينفذ التعليمات عند عدم تحقق الشرط.

على سبيل المثال: لتنفيذ كود معين عندما نكون في صفحة الأرشيف، والتي يكون لها التصنيف ووكوميرس نكتب الكود التالي:

<?php 
if ( is_archive() && is_category( 'ووكوميرس ' ) ):
echo "مرحبًا بك في أرشيف ووكوميرس ";
endif; 
?>

استخدام الوسوم الشرطية مع البرمترات

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

if (is_page('About Us')):
    // الكود المكتوب هنا ينفذ من أجل صفحة حولنا 
endif; 

ولكتابة شرط للتحقق من المعرف أو الـ id الخاص بمنشور معين نكتب الكود التالي:

if (is_single (10)):
    //  الكود المكتوب هنا ينفذ من أجل المنشور الذي يملك معرف يساوي 10 
endif; 

ولكتابة كود معين ينفذ فقط في صفحة أرشيف الكاتب الذي يملك اسم محدد وليكن olasaleh نكتب الكود التالي:

if (is_author( 'olasaleh' ):
echo 'Hi OLA'; // الكود المكتوب هنا ينفذ من أجل صفحة الأرشيف للكاتب olasaleh
endif; 

كما يمكن تمرير أكثر من برامتر لبعض الوسوم الشرطية ضمن مصفوفة، على سبيل المثال للتحقق من أن الصفحة التي نعرضها تحقق شرط معرف الصفحة هو 10 أو اسم الصفحة هو About Us نمرر البرامترات بالشكل التالي:

if (is_page (array (10,'About Us')):
echo ' either the current page’s ID is  10 or  current page’s title is About Us ' ;
endif; 

أمثلة عملية على استخدام الوسوم الشرطية في تطوير قالب ووردبريس

مثال1: استخدام الوسوم الشرطية كبديل للتسلسل الهرمي لملفات القالب

يمكنك استخدام الوسوم الشرطية للوردبريس كبديل للتسلسل الهرمي لملفات قالب ووردبريس واتخاذ قرارات مماثلة لسلوك التسلسل الهرمي للقالب.

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

<?php
/**
 * The main template file.
*/
get_header(); ?>

if( is_home() || is_archive() ) {
# The user is at the home page OR archive page 
}  //end is_home(); 


if( is_page()) {
# The user is reading a page
} // end is_page();

if( is_single() ) {
# The user is reading a post
} //end is_single(); 

<?php get_footer(); ?>

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

<?php if ( ! is_page() ): ?>
<span> <?php the_date(); ?> </span>
<?php endif; ?>

مثال2: استخدام الوسوم الشرطية لتحميل ملفات التنسيقات في صفحات محددة

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

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

للقيام بذلك نكتب الكود التالي في ملف وظائف القالب functions.php:

add_action( 'wp_enqueue_scripts', 'wpar_special_page' );

function wpar_special_page( ) {
    if ( ! is_page( 'wparpage' ) ) {
    	return;
	}
    wp_enqueue_script( 'special_js', get_stylesheet_directory_uri().'/special.js' );
    wp_enqueue_style( 'special_css', get_stylesheet_directory_uri().'/special.css');
}

في هذا الكود قمنا بتضمين ملفات CSS و JavaScripr التي نريد تضمينها في رتل انتظار وودربريس من خلال تعريف دالة رد نداء باسم wpar_special_page( ) واستدعاء الدالتين wp_enqueue_script وwp_enqueue_style ضمنها.
بعدها قمنا بربط هذه الدالة بخطاف الإجراء wp_enqueue_scripts لكننا كما تلاحظ سبقنا أوامر إضافة الملفات لرتل الانتظار بوسم شرطي يتحقق من كون الصفحة الحالية التي نريد أن نضمن فيها هذه الملفات هي الصفحة المطلوبة.
فإذا لم تكن هي الصفحة المطلوبة فسوف يتم الرجوع من الدالة ولن يتم تحميل الملفات، وإلا فسيتم متابعة التنفيذ وتحميل ملفات التنسيقات والسكربتات الخاصة بنا على هذه الصفحة فقط.
اقرأ المزيد:
تعلم طريقة تضمين ملفات CSS و JavaScript في قالب وودربريس بشكل صحيح

شرح الخطافات في ووردبريس WordPress Hooks وأهميتها لمطوري القوالب والإضافات

الخلاصة

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

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

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

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