شرح عملي Actions وFilters في ووردبريس للمطورين

x32x01
  • بواسطة x32x01 ||
لو بتشتغل على ووردبريس أو لسه بتتعلم، فيه حاجات بسيطة لكنها قوية جدًا هتخليك تتحكم في الموقع من غير ما تلمّس الكود الأصلي - الحكاية اسمها Actions و Filters.

🎯 الموضوع سهل ومهم لأي مطور أو حد بيحب يزود مميزات في الموقع بسرعة من غير وجع دماغ.

إيه هما Actions و Filters وليه مهمين؟​

ببساطة، ووردبريس عامل نظام "أحداث" و"مرشحات" جاهز تقدر تربط فيه كودك.
  • Actions: لو عايز تعمل حاجة وقت حدوث حدث معين - زي لما بوست يتنشر أو لما صفحة تتحمل - بتستخدم action.
  • Filters: لو حابب تعدّل بيانات قبل ما تُعرض - زي عنوان المقال أو محتوى الـexcerpt - بتستخدم filter.
الميزة الكبيرة إنك تقدر تضيف سلوك جديد أو تغيّر خرّاج موجود من غير ما تمس ملفات الكور. يعني التحديثات مش هتمسح شغلك. ✨

فين بتحط الكود؟ functions.php ولا Plugin؟​

فيه طريقتين مشهورين:
  1. functions.php في الثيم: سريع وبسيط للتجارب الصغيرة.
  2. Plugin مخصص: لو الشغل هيستمر أو هتشاركه، الأفضل تكتب Plugin - كده منظّم وأسهل للصيانة.
لو هتعدل حاجة على موقع حيّ شغال، أنصح تعمل Plugin صغير بدل تعديل الثيم مباشرة علشان لو غيرت ثيم مش يختفي شغلك.

أمثلة عملية بسيطة تخليك تفهم بسرعة 🛠️


إضافة نص بعد كل مقال (Filter)​

اللي هنعمله هنا: نستخدم add_filter('the_content', ...) علشان نضيف فقرة في آخر كل مقال.
PHP:
<?php
add_filter('the_content', function($content) {
    return $content . '<p>شكراً لقرائتك! 👍 لو عجبتك المقالة اشترك في القناة</p>';
});
الكود فوق بسيط وخطير - كل ما المقال يعرض، الفقرة هتتلصق في الآخر من غير ما تعدل القالب نفسه.

تنفيذ حاجة وقت نشر المقال (Action)​

مثال: لما بوست يتنشر نبعت إيميل أدمين أو نعمل لوج.
PHP:
<?php
add_action('publish_post', function($post_id) {
    // مثال بسيط: نسجل إن المقال اتنشر
    error_log("Post $post_id published at " . current_time('mysql'));
});
استخدام الـactions مفيد لو عايز تربط ووردبريس بخدمات خارجية أو تعمل إشعارات.

شوية نصايح عملية عشان تستخدمهم صح ♟️

  • دايمًا استخدم أسماء دوال ووحدات فريدة عشان متتصادمش مع Plugins تانية. مثلاً: mytheme_prefix_add_footer_text.
  • مفيش مشكلة في استخدام Closure functions (زي الأمثلة فوق) بس لو عايز تفضّل قادر تلغي الhook بعدين، استخدم دالة مسماة علشان تقدر تعمل remove_action بسهولة.
  • خلي شغلك خفيف - أي فلتر تقيله ممكن يبطّئ الصفحة، فلو هتعمل عمليات تقيلة استخدم cron job أو تأجيل التنفيذ.
  • لو بتكتب Plugin، ضيف خيارات في الـadmin علشان تقدر تطفّي وتشغّل الـhooks بسهولة.

أمثلة حقيقية أكتر (Advanced) - تغيير عنوان المقال قبل العرض (Filter)​

لو عايز تضيف كلمة مفتاحية أو تسمية قبل العنوان:
PHP:
<?php
function my_prefix_modify_title($title) {
    if (is_single()) {
        return '[Tutorial] ' . $title;
    }
    return $title;
}
add_filter('the_title', 'my_prefix_modify_title', 10, 1);
الـpriority (الرقم 10) والـaccepted args (1) مهمين لو بتناغم مع filters تانية.

ازاي تختبر وتصلّح لما حاجة ماتشتغلش؟ 🔍

  • استخدم error_log() أو var_dump() مع wp_die() مؤقتًا.
  • شغّل وضع الـ WP_DEBUG في wp-config.php أثناء التطوير.
  • لو الكود مش شغال، شوف أولًا لو الـhook اللي بتستخدمه فعلاً بيتنفذ في الحالة اللي انت متوقعها (is_single, is_admin, الخ).
  • لو عملت Plugin جديد ومش بيشتغل، اتأكد إنك فعّلته من صفحة Plugins.

أمثلة استخدام عملية في مشاريع حقيقية 🧩

  • إضافات SEO: تستخدم filters تعدل عناوين الصفحات وmeta tags.
  • أنظمة عضويات: تستخدم actions وقت تسجيل مستخدم علشان تبعت إيميل ترحيب أو تسجل بيانات إضافية.
  • ربط APIs: وقت حفظ بوست، تقدر تعمل action تبعت الداتا لواجهة خارجية (مثلاً CRM).

مقارنة سريعة بين Actions و Filters​

  • Filters: بيعدّلوا بيانات و بيرجعوا قيمة (return). لازم ترجع القيمة المعدلة.
  • Actions: بينفذوا حاجة ومش لازم يرجعوا حاجة. غالبًا بتستخدمهم للإجراءات الجانبية.

خاتمة ونصيحة أخيرة 👇

لو أنت عايز تتحكم في ووردبريس بشكل محترف، تعرف على Actions و Filters كويس. بعد شوية هتلاقي نفسك بتبني وظائف معقدة من غير ما تلمّس الكور، وهتقدر تعمل Plugins قابلة لإعادة الاستخدام بسهولة. جرب الأمثلة اللي فوق وابدأ تغيّر حاجة بسيطة علشان تتعلم.
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
346
x32x01
x32x01
x32x01
الردود
0
المشاهدات
447
x32x01
x32x01
x32x01
الردود
0
المشاهدات
390
x32x01
x32x01
x32x01
الردود
0
المشاهدات
467
x32x01
x32x01
x32x01
الردود
0
المشاهدات
331
x32x01
x32x01
x32x01
الردود
0
المشاهدات
344
x32x01
x32x01
x32x01
الردود
0
المشاهدات
443
x32x01
x32x01
x32x01
الردود
0
المشاهدات
325
x32x01
x32x01
x32x01
الردود
0
المشاهدات
351
x32x01
x32x01
x32x01
الردود
0
المشاهدات
375
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,830
المشاركات
2,027
أعضاء أكتب كود
466
أخر عضو
chaouki
عودة
أعلى