اذهب إلى المحتوى

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

wordpress-conditional-tags.thumb.png.417

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

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

الوسوم الشرطية هي دوال خاصة بووردبريس تقوم بإرجاع قيمة صح أو خطأ (boolean) إعتمادا على معطيات مختلفة. 

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

مفيدة

  • ()is_single سيتم إرجاع قيمة صحيحة إذا كانت الصفحة الحالية متكونة من تدوينة واحدة فقط من أي نوع ماعدا التدوينة مع المرفقات. ويتم ذلك عن طريق تمرير رقم التدوينة أو عنوانها كمعامل (parameter).
  • ()is_page سيتم إرجاع قيمة صحيحة إذا كانت الصفحة معروضة (غير مخفية).
  • ()is_singular مشابهة لـ ()is_single، لكنها تعود بقيمة صحيحة إذا تم عرض تدوينة تحتوي على مرفقات، وهي مشابهة لـ ()is_single() || is_page() || is_attachment حيث أن || تعني "أو".
  • ()is_archive سيتم إرجاع قيمة صحيحة إذا كانت الصفحة الحالية عبارة عن أرشيف مهما كان نوعها.
  • ()is_main_query سيتم إرجاع قيمة صحيحة إذا كان الاستعلام الحالي هو الاستعلام الرئيسي لهذه الصفحة.

مبهمة ومخادعة

  • ()is_admin سيتم إرجاع قيمة صحيحة إذا كُنت في منطقة الإدارة من موقع ووردبريس، بعض الأشخاص يعتقد أن هذا الوسم لمعرفة هل المستخدم الحالي من المدراء أم لا، وهذا الأمر خاطئ.
  • ()is_dynamic_sidebar سيتم إرجاع قيمة صحيحة إذا كان الشريط الجانبي الحالي (ويدجت أو مناطق) لديه أية ودجات مفعلة.
  • ()is_home هذا الوسم مربك قليلا، سوف تعتقد للوهلة الأولى أنه لمعرفة هل أنت في الصفحة الرئيسية أم لا مثل http://www.example.com. لكن هذا ليس صحيح لأن هذا الوسم لمعرفة هل أنت في صفحة الرئيسية للتدوينات أم لا لأنه في بعض الأحيان قد تكون الصفحة الرئيسية للموقع ليس هي نفسها للتدوينات.
  • ()is_front_page سيتم إرجاع قيمة صحيحة إذا كانت الصفحة التي أنت فيها هي الصفحة الرئيسية سواء أن كانت هي نفسها للتدوينات أو صفحة تابعة للمدونة.

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

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

هنالك الكثير من الإستخدامات للوسوم الشرطية وسنقوم الآن باستعراض أشهرها وأكثرها استعمالا.

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

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

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

/* الوسط: داخل ملف single.php */
<?php if ( ! is_page() ): ?>
    <span class="meta-date">
        <?php the_date(); ?>
    </span>
<?php endif; ?>

ملاحظة حول الوسوم الشرطية والقالب الهرمي

إن القالب الهرمي مشابه بالأساس لـشجرة القرار التي يمكنك بناؤها باستعمال الوسوم الشرطية. ويمكنك أيضا وضع كامل القالب في index.php واستخدام هذه الوسوم لعمل ما يعمله القالب الهرمي.

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

wordpress-conditional-tags-graph.thumb.j

إدراج ورقة أنماط خاصة أو ملفات جافا سكريبت

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

add_action( 'wp_enqueue_scripts', 'wpshout_special_page' );
function wpshout_special_page() {
    if ( is_page( 'special-page' ) ) {
        wp_enqueue_script( 
            'special_js', 
            get_stylesheet_directory_uri().'/special.js'
        );
        wp_enqueue_style( 
            'special_css', 
            get_stylesheet_directory_uri().'/special.css'
        );
    }
}

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

لاحظ أن ()is_page ستقوم باختبارين:

  • الأول للتأكد من أن المشاركة من نوع صفحة.
  • والثاني هل لصفحة special-page اسم للطيف، معناها هل هي slug ؟ ويقصد بها أن الرابط يحتوي على عنوان الصفحة مثلا في هذا الرابط، سيكون slug هو wordpress-203. ولاختبار هذا قمنا بتمرير 'special-page' إلى ()is_page كمعامل.

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

()is_admin يمكن استخدامه أيضا فهو حالة أخرى حيث تحتاج الإضافات للقيام بعمليات اختبار مماثلة.

ملاحظة عن الوسوم الشرطية والحالة العامة

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

هذا يعني أن بعض الإجراءات التي يتم استخدامها عادة لا يمكن استخدامها بالتوازي مع الوسوم الشرطية، ومن أشهر هذه الإجراءات: setup_theme، init، register_sidebar و pre_get_posts. ومع ذلك، حوالي نصف الخُطّافات (hooks) وجميع القوالب تعمل جيدا بعد أن يتم تحميل الوسوم الخاصة بالقوالب، وسوف تكون مفيدة جدا هناك.

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

الوسوم الشرطية: تعلمها، استخدمها، وأحبها

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

ترجمة وبتصرف للمقال: WordPress’s Conditional Tags لصاحبه David Hayes.


تفاعل الأعضاء

أفضل التعليقات



انضم إلى النقاش

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

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...