التعامل مع (Custom Fields)

الدرس: التعامل مع الحقول المخصصة (Custom Fields) في ووردبريس

1. مقدمة: يعني إيه الحقول المخصصة؟

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

مثلاً:

  • سعر منتج
  • تاريخ انتهاء صلاحية
  • رابط فيديو
  • بيانات إضافية لأي محتوى

2. ليه نستخدم الحقول المخصصة؟

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

3. الفرق بين الحقول المخصصة والفئات والتصنيفات

الخاصيةالفئات (Categories)التصنيفات (Tags)الحقول المخصصة (Custom Fields)
نوع البياناتتصنيفات عامةكلمات مفتاحيةبيانات حرة ومخصصة
التكرارلانعمحسب الاستخدام
الاستخدامتنظيم المحتوىوصف المحتوىإضافة بيانات خاصة
طريقة العرضمن القالب أو الإضافةمن القالبمن القالب عن طريق الكود

4. أنواع الحقول المخصصة اللي ممكن تضيفها

  • نص (Text)
  • رقم (Number)
  • اختيار (Select)
  • خانة اختيار (Checkbox)
  • تاريخ (Date)
  • رابط (URL)
  • صورة (Image)
  • وأكثر حسب الحاجة

5. إزاي تضيف حقل مخصص يدويًا في ووردبريس؟

ووردبريس بيجي بخاصية الحقول المخصصة (Custom Fields) جاهزة بس بتكون مخفية في بعض الإصدارات.
تقدر تفعيلها من:

  • ادخل على صفحة تحرير منشور
  • فوق على الثلاث نقاط (خيارات الشاشة)
  • فعل خيار “الحقول المخصصة” (Custom Fields)

لو مش موجودة، ممكن تضيفها بإضافة خاصة.

إضافة حقل مخصص من لوحة التحكم

  1. في صفحة تحرير المقال، تحت المحرر هتلاقي جزء الحقول المخصصة
  2. تضغط على “أدخل جديد”
  3. تكتب اسم الحقل (مثلاً: price)
  4. تكتب القيمة (مثلاً: 150)
  5. تضغط إضافة

6. عرض الحقول المخصصة في القالب (Themes)

عشان تعرض القيمة دي في الموقع لازم تستخدم دالة get_post_meta() في ملف القالب.

مثال:

<?php
// الحصول على قيمة الحقل المخصص باسم price للمنشور الحالي
$price = get_post_meta(get_the_ID(), 'price', true);
if ($price) {
    echo '<p>سعر المنتج: ' . esc_html($price) . ' جنيه</p>';
}
?>

الدالة دي بتاخد:

  • ID المنشور
  • اسم الحقل
  • true عشان ترجع قيمة واحدة فقط مش مصفوفة

7. استخدام الحقول المخصصة مع Custom Post Types

لو عندك نوع منشور مخصص (زي منتجات)، تقدر تضيف حقول مخصصة مخصوص له زي السعر، اللون، الحجم…

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

8. إضافة الحقول المخصصة بطرق سهلة: إضافات مشهورة

لو مش حابب تكتب كود كتير، فيه إضافات بتسهل عليك الشغل:

  • Advanced Custom Fields (ACF):
    أشهر إضافة، بتخليك تنشئ حقول مخصصة بأنواع مختلفة بسهولة كبيرة من لوحة التحكم، وبتعرضها بالكود اللي الإضافة بتديلهالك.
  • Meta Box:
    إضافة احترافية تانية لتنظيم الحقول وإدارتها.
  • Pods:
    إضافة شاملة لإنشاء أنواع منشورات مخصصة وحقول مخصصة مع بعض.

9. مثال عملي: إنشاء حقل مخصص لمنتج (سعر المنتج مثلاً)

1. تسجيل نوع منشور المنتجات (لو مش مسجل)

function abozaid_register_product_post_type() {
    register_post_type('product', array(
        'labels' => array(
            'name' => __('منتجات', 'abozaid'),
            'singular_name' => __('منتج', 'abozaid'),
        ),
        'public' => true,
        'has_archive' => true,
        'supports' => array('title', 'editor', 'thumbnail'),
        'show_in_rest' => true,
    ));
}
add_action('init', 'abozaid_register_product_post_type');

2. إضافة حقل السعر في صفحة تحرير المنتج

ممكن تستخدم خاصية الحقول المخصصة في ووردبريس أو إضافة ACF لتسهيل المهمة.

3. عرض السعر في قالب single-product.php

<?php get_header(); ?>

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <h1><?php the_title(); ?></h1>
    <div><?php the_content(); ?></div>

    <?php
    $price = get_post_meta(get_the_ID(), 'price', true);
    if ($price) {
        echo '<p>سعر المنتج: ' . esc_html($price) . ' جنيه</p>';
    } else {
        echo '<p>السعر غير متوفر</p>';
    }
    ?>

<?php endwhile; endif; ?>

<?php get_footer(); ?>

10. نصائح مهمة عند استخدام الحقول المخصصة

  • دايمًا استخدم أسماء حقول واضحة ومحددة
  • استخدم sanitize_text_field أو دوال تعقيم أخرى لو بتتعامل مع مدخلات المستخدم
  • لما تعرض البيانات، استخدم دوال الهروب (مثل esc_html، esc_url) عشان تحمي موقعك من هجمات الـ XSS
  • نظم حقولك وحاول تستخدم إضافات متقدمة لو هتضيف حقول كتير
  • تذكر إن الحقول المخصصة مش بتظهر تلقائي في لوحة التحكم إلا لو فعلتها أو استخدمت إضافة

11. مراجعة سريعة

  • الحقول المخصصة بتضيف بيانات إضافية لأي منشور أو صفحة
  • تقدر تضيفها من لوحة التحكم أو بالكود
  • تستخدم get_post_meta لعرض البيانات في القالب
  • في إضافات زي ACF بتسهل عليك التعامل
  • لازم تعقم البيانات وتحمي موقعك

12. أسئلة شائعة

س: هل ممكن أضيف حقل مخصص لأي نوع منشور؟
ج: أيوه، تقدر تضيف لأي منشور أو صفحة أو نوع منشور مخصص.

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

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

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