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

أمثلة عملية بسيطة تخليك تفهم بسرعة
الكود فوق بسيط وخطير - كل ما المقال يعرض، الفقرة هتتلصق في الآخر من غير ما تعدل القالب نفسه.
استخدام الـactions مفيد لو عايز تربط ووردبريس بخدمات خارجية أو تعمل إشعارات.
شوية نصايح عملية عشان تستخدمهم صح
الـpriority (الرقم 10) والـaccepted args (1) مهمين لو بتناغم مع filters تانية.
ازاي تختبر وتصلّح لما حاجة ماتشتغلش؟
أمثلة استخدام عملية في مشاريع حقيقية
خاتمة ونصيحة أخيرة
لو أنت عايز تتحكم في ووردبريس بشكل محترف، تعرف على Actions و Filters كويس. بعد شوية هتلاقي نفسك بتبني وظائف معقدة من غير ما تلمّس الكور، وهتقدر تعمل Plugins قابلة لإعادة الاستخدام بسهولة. جرب الأمثلة اللي فوق وابدأ تغيّر حاجة بسيطة علشان تتعلم.

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

فين بتحط الكود؟ functions.php ولا Plugin؟
فيه طريقتين مشهورين:- functions.php في الثيم: سريع وبسيط للتجارب الصغيرة.
- 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'));
});
شوية نصايح عملية عشان تستخدمهم صح
- دايمًا استخدم أسماء دوال ووحدات فريدة عشان متتصادمش مع 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);
ازاي تختبر وتصلّح لما حاجة ماتشتغلش؟
- استخدم
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 قابلة لإعادة الاستخدام بسهولة. جرب الأمثلة اللي فوق وابدأ تغيّر حاجة بسيطة علشان تتعلم. التعديل الأخير: