فهم البنية الأساسية لإضافات ووردبريس (WordPress Plugins)
قبل البدء في التطوير، من الضروري فهم المفاهيم الأساسية وطريقة عمل إضافات ووردبريس (WordPress Plugins). في الأساس، إضافة ووردبريس هي مجموعة من ملفات PHP التي تسمح بتوسيع وظائف ووردبريس الأساسية، وعادة ما تحتوي على توضيحات، كود تنفيذي، ملفات موارد، وما إلى ذلك. يعتمد تشغيل الإضافة بالكامل على نظام الخطافات (Hooks) الذي توفره ووردبريس.
استكشاف هيكل ملفات معايير الإضافات (Plugins)
عادةً ما يتبع الإضافات القياسية لـ WordPress هيكل مجلدات معين. ملف الإضافة الرئيسي، على سبيل المثال… my-first-plugin.phpيجب وضعه في المكان المناسب. /wp-content/plugins/ يقع الملف داخل الدليل (directory) أو في أحد الدلائل الفرعية (subdirectories) الخاصة به. هذا الملف في غاية الأهمية، لأنه يحتوي على معلومات رأس الإضافة (plugin header)، والتي تُستخدم لتحديد إضافتك لنظام ووردبريس (WordPress).
قد يتضمن دليل المكونات (plugins) النموذجي الأجزاء التالية: ملف المكون الرئيسي، بالإضافة إلى المجلدات المخصصة لتخزين الموارد الثابتة مثل JavaScript وCSS. assets/ مجلدات، المستخدمة لملفات فئات PHP includes/ الفهرس، المستخدم لواجهة المستخدم admin/ و public/ المجلدات، بالإضافة إلى الأدوات المستخدمة لترجمة الملفات. languages/ الفهرس: يساعد وجود هيكل جيد في تنظيم وصيانة الكود، خاصة عندما تصبح وظائف الإضافات (البرامج الإضافية) معقدة.
القراءة الموصى بها تطوير إضافات ووردبريس: دليل شامل من المبتدئين إلى الخبراء لبناء وظائف مخصصة。
معرفة معلومات رأس ملفات الإضافات الأساسية
يجب أن يبدأ كل إضافة (plugin) بمعلومات رئيسية (metadata) محددة، وتُعرف هذه المعلومات باسم “الرأس” (Header)، وتُضمن داخل كتل تعليقات PHP. هذه المعلومات ضرورية لكي يتمكن نظام ووردبريس (WordPress) من التعرف على الإضافات. الصيغة الأساسية لهذه الم
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://www.example.com/my-first-plugin
* Description: 这是一个简短描述,介绍插件功能的句子。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://www.example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ من بينها،Plugin Name هذه المعلومات ضرورية، بينما باقي المعلومات اختيارية ولكن يُنصح بتقديمها. خاصةً… Text Domain و Domain Pathهذه المعلومات مُعدة لدعم تعدد اللغات (الترجمة الدولية) للإضافات (البرامج الإضافية). سيقوم ووردبريس (WordPress) بقراءة هذه المعلومات وعرضها في صفحة إدارة الإضافات في الواجهة الخلفية.
إنشاء بيئة تطوير محلية وإنشاء أول إضافة (plugin)
قبل البدء في البرمجة، من الضروري وجود بيئة تطوير محلية معزولة وقابلة للتكرار بسرعة. هذا يمكن أن يساعد في تجنب المخاطر التي قد تنشأ من اختبار المواقع على الإنترنت مباشرة.
تكوين سلسلة أدوات التطوير المحلية
ننصح باستخدام بيئات التكامل المبنية على الخوادم المحلية، مثل Local by Flywheel أو XAMPP أو Laragon. هذه الأدوات تسمح بتثبيت PHP وMySQL وخادم الويب اللازمين لتشغيل ووردبريس بنقرة واحدة. بالإضافة إلى ذلك، ستحتاج إلى محرر كود، مثل Visual Studio Code أو PHPStorm، الذي يوفر ميزات مثل تمييز الكود النصي، والاقتراحات أثناء الكتابة، وإمكانيات التصحيح. تأكد من أن إصدار PHP الذي تستخدمه متوافق مع الخادم المستهدف؛ يُنصح عمومًا باستخدام إصدار PHP 7.4 أو أحدث.
قم بكتابة وتفعيل إضافة (plugin) بسيطة.
الآن، دعونا نقوم بإنشاء أول إضافة (plugin) وظيفية. /wp-content/plugins/ داخل المجلد، قم بإنشاء مجلد جديد وأطلق عليه الاسم التالي: my-first-pluginداخل هذا المجلد، قم بإنشاء ملف بالاسم my-first-plugin.php ملف.
القراءة الموصى بها دليل نهائي لتطوير إضافات ووردبريس: كيفية بناء أول إضافة خاصة بك من الصفر。
قم بنسخ معلومات رأس الإضافة (plugin header) المذكورة في القسم السابق إلى بداية هذا الملف. بعد ذلك، سنضيف ميزة بسيطة: إضافة نص مخصص تلقائيًا في نهاية محتوى المقال. سيتطلب ذلك استخدام “خطافات المرشحات” (Filter Hooks) في ووردبريس (WordPress). أضف الكود التالي أسفل معلومات الرأس:
// 在文章内容后添加自定义文本
function myfp_add_footer_text( $content ) {
// 仅对主循环中的单篇文章生效
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>شكرًا لقراءتكم! تم تقديم الدعم لهذا المقال بواسطة “أول إضافة لي” (My First Plugin).</em></p>';
$content .= $custom_text;
}
return $content;
}
// 将函数挂载到‘the_content’过滤器上
add_filter( 'the_content', 'myfp_add_footer_text' ); بعد حفظ الملف، قم بتسجيل الدخول إلى واجهة خلفية WordPress الخاصة بك، ثم اذهب إلى صفحة “الإضافات” (Plugins). يجب أن ترى إضافة جديدة باسم “أول إضافة لي” (My First Plugin). انقر على “تفعيلها” (Enable it). الآن، قم بزيارة أحد مقالات الموقع، وستلاحظ أن النص الذي أضفناه قد ظهر في نهاية محتوى المقال. وبذلك، تم تشغيل أول إضافة لك في WordPress بنجاح.
إتقان التقنيات الأساسية لتطوير الإضافات (البرامج الإضافية)
تعتمد قابلية التوسعة الكبيرة لبرنامج ووردبريس (WordPress) على عدة مفاهيم أساسية: الخطافات (Hooks)، وواجهة برمجة التطبيقات للخيارات (Options API)، وأنواع المقالات المخصصة (Custom Post Types – CPT)، بالإضافة إلى عمليات التعامل مع قاعدة البيانات. إتقان هذه المفاهيم يُعد أساسًا للتطوير المتقدم في استخدام ووردبريس.
فهم عميق لميكانيزمات الاستجابة للأحداث (Events) ومخالب المرشحات (Filter Hooks)
نظام الخطافات (Hook System) هو الأساس في تطوير إضافات ووردبريس (WordPress Plugins)، وينقسم إلى نوعين: الإجراءات (Actions) والمرشحات (Filters). تتم تنفيذ خطافات الإجراءات في نقاط محددة أثناء تشغيل الموقع (مثل تحميل رأس الصفحة أو عند حفظ المقال)، مما يسمح لك بتنفيذ بعض العمليات مثل إضافة قوائم أو إرسال رسائل إلكترونية. add_action() دالة للتثبيت (Function for mounting).
على سبيل المثال، يمكن إضافة صفحة إلى قائمة إدارة الخلفية (الواجهة الخلفية للنظام).
function myfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 权限
'myfp-settings', // 菜单slug
'myfp_settings_page', // 回调函数,用于显示页面内容
'dashicons-admin-generic', // 图标
20
);
}
add_action( 'admin_menu', 'myfp_add_admin_menu' ); تسمح خيوط فلاتر (Filter Hooks) بـ“تعديل” البيانات. فهي تعترض البيانات قبل استخدامها (مثل عرضها في المتصفح أو تخزينها في قاعدة البيانات)، حيث يمكنك تعديلها وإرجاع قيم جديدة. لقد استخدمنا هذه الخيوط في أول إضافة (Plugin) ل the_content إنه مجرد خطاف (hook) لمرشح (filter).
القراءة الموصى بها تحليل متعمق لـ WooCommerce: دليل شامل لبناء مواقع التجارة الإلكترونية عالية الأداء من الصفر。
استخدام واجهة برمجة التطبيقات (API) لتخزين إعدادات الإضافات
عادةً ما تحتاج المكونات الإضافية (الإضافات) إلى حفظ بعض الإعدادات، مثل مفاتيح واجهات برمجة التطبيقات (API keys)، وحالات التفعيل/التعطيل (on/off status)، وما إلى ذلك. يوفر ووردبريس (WordPress) الوسائل اللازمة ل Options API للتعامل بسهولة مع هذا النوع من البيانات، تتضمن الدوال الأساسية ما يلي: add_option(), get_option(), update_option() و delete_option()。
قم بإنشاء صفحة إعدادات بسيطة لاستخدام هذه الدوال. أولاً، قم بتعريف دوال الاستجابة للقوائم المذكورة أعلاه. myfp_settings_page لعرض نموذج:
function myfp_settings_page() {
?>
<div class="wrap">
<h1>إعدادات الإضافة الخاصة بي</h1>
<form method="post" action="/ar/options.php/" data-trp-original-action="options.php">
<?php
settings_fields( 'myfp_settings_group' ); // 输出安全字段
do_settings_sections( 'myfp-settings' ); // 输出设置部分
submit_button(); // 输出提交按钮
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. ثم، يجب عليك استخدام… register_setting(), add_settings_section() و add_settings_field() استخدم دوال مثل `declare` و `initialize` لتعريف وتهيئة هذه الحقول المتعلقة بالإعدادات. سيؤدي هذا الإجراء إلى حفظ البيانات بشكل آمن. wp_options في الجدول.
بناء مثال كامل على إضافة (plugin) عملية (practical).
سندمج المعرفة التي تعلمناها مسبقًا لإنشاء إضافة بسيطة ولكنها عملية: إضافة لتقدير وقت قراءة المقالات. ستعرض هذه الإضافة التقدير التقريبي لوقت القراءة أسفل عنوان المقال.
إنشاء ملف رئيسي للإضافة (plugin) ودوال وظيفية (functional functions)
إنشاء مجلد للإضافات (plugins) post-reading-time والملف الرئيسي post-reading-time.phpقم بملء معلومات رأس الإضافة القياسية. بعد ذلك، سنقوم بإنشاء الدوال الأساسية لحساب وقت القراءة.
function prt_calculate_reading_time( $post_id ) {
// 获取文章内容
$content = get_post_field( 'post_content', $post_id );
// 清除HTML标签和短代码,只计算文字
$text = strip_tags( strip_shortcodes( $content ) );
// 计算字数(中英文混合场景的简单处理)
$word_count = mb_strlen( $text, 'UTF-8' );
// 假设平均阅读速度为每分钟300字(可根据需要调整)
$reading_speed = 300;
// 计算分钟数,至少1分钟
$minutes = floor( $word_count / $reading_speed );
if ( $minutes < 1 ) {
$minutes = 1;
}
// 返回包含时间的字符串
return sprintf( _n( '约 %d 分钟读完', '约 %d 分钟读完', $minutes, 'post-reading-time' ), $minutes );
} عرض المحتوى في الواجهة الأمامية بشكل متكامل مع نظام الإدارة في الخلفية
بعد ذلك، نحتاج إلى تحديد كيفية عرض هذا الوقت. الطريقة الشائعة هي إضافته إلى معلومات الوصف (metadata) للمقال (أسفل العنوان). the_content المرشحات (filters) أو المواضيع (topics) توفر خطافات (hooks) معينة؛ في هذه الحالة، سنستخدم خطاف الإجراء (action hook) الأكثر ملاءمة. thesis_hook_before_post(اعتمادًا على الموضوع)، أو بطريقة أكثر عمومية، يمكن تصفية محتوى المقالات مباشرة.
لزيادة المرونة، قمنا بإنشاء رمز مختصر (Shortcode) وأداة صغيرة (Widget)، وقدمنا خيار تهيئة بسيطًا للتحكم في ما إذا كان سيتم عرض المحتوى تلقائيًا أم لا.
أولاً، قم بتسجيل الرمز القصير:
function prt_reading_time_shortcode( $atts ) {
$atts = shortcode_atts( array(
'id' => get_the_ID(),
), $atts, 'reading_time' );
$time_text = prt_calculate_reading_time( $atts['id'] );
return '<span class="reading-time">'. $time_text . '</span>'php
add_shortcode('reading_time', 'prt_reading_time_shortcode'); ثم، يمكننا إضافة النتائج تلقائيًا إلى بداية محتوى المقالة (من خلال استخدام فلتر):
function prt_prepend_to_content( $content ) {
if ( is_single() && get_option( 'prt_auto_display', '1' ) == '1' ) {
$time_html = '<div class="post-reading-time">' . prt_calculate_reading_time( get_the_ID() ) . '</div>';
$content = $time_html . $content;
}
return $content;
}
add_filter( 'the_content', 'prt_prepend_to_content' ); ستحتاج أيضًا إلى إنشاء خيار تعديل في الواجهة الخلفية (الخلفية). prt_auto_displayيتيح للمستخدمين الاختيار بين تفعيل أو تعطيل وظيفة العرض التلقائي. وبذلك، يتم إنشاء إضافة (plugin) كاملة الوظائف وواضحة الهيكل.
الملخصات
بدأنا بفهم البنية الأساسية للإضافات ومعلومات رؤوس الملفات (file headers)، ثم قمنا تدريجياً بإنشاء بيئة التطوير الخاصة بنا وأنشأنا أول إضافة بسيطة ذات وظيفة معينة. من خلال دراسة عميقة لنظام الروابط (hooks) الأساسي في قابلية توسيع ووردبريس (WordPress’s extensibility)، تعلمنا كيفية التدخل في سير التنفيذ وتعديل البيانات دون الحاجة إلى تعديل الكود الأساسي للنظام. باستخدام واجهة برمجة التطبيقات المتعلقة بالإعدادات (Options API)، تمكنا من إنشاء إعدادات قابلة للحفظ للإضافات. وأخيراً، من خلال بناء مثال كامل لإضافة تقدير وقت قراءة المقالات، دمجنا بين المعرفة النظرية والممارسة العملية، مغطين بذلك العملية الكاملة للتطوير من كتابة منطق الوظيفة، إلى إنشاء الأكواد المختصرة (shortcodes) وحتى دمجها في واجهة المستخدم الأمامية (frontend). تذكروا أن تطوير إضافات ممتازة يبدأ بتخطيط واضح، والالتزام بمعايير كتابة الكود الخاصة بووردبريس، ووضع الأمان والأداء وتجربة المستخدم في المقام الأول دائماً.
الأسئلة الشائعة الأسئلة المتداولة
ما هي المعرفة المسبقة المطلوبة لتطوير إضافات (Plugins) لمنصة ووردبريس (WordPress)؟
يجب أن تمتلك أساسًا متينًا في برمجة PHP، حيث يتكون كود الإضافات بشكل أساسي من لغة PHP. بالإضافة إلى ذلك، من الضروري أن تكون على دراية أساسية بلغات HTML وCSS وJavaScript للتعامل مع عرض المحتوى والتفاعلات على الجانب الأمامي (الواجهة البرمجية للمستخدم). سيساعدك فهم المفاهيم الأساسية لقاعدة بيانات MySQL في فهم طرق تخزين البيانات واسترجاعها في WordPress. والأهم من ذلك، يجب أن تعتاد على قراءة دليل التطوير الرسمي لـ WordPress (Codex) ومرجع المطورين (Developer Reference).
كيف يمكنني التأكد من أن الإضافة (البرنامج الإضافي) التي أطورها آمنة؟
الأمان أمر بالغ الأهمية. يجب دائمًا التحقق من مدخلات المستخدمين وتنقيتها، بالإضافة إلى تهريب البيانات المنتجة (Escaping the data). استخدم ما يوفره WordPress من آليات غير مرتبطة بـ “nonce” (Nonce) لمنع تزوير الطلبات بين المواقع (Cross-Site Request Forgery – CSRF). وعند إعداد استعلامات قاعدة البيانات، تأكد من استخدام الطرق الصحيحة لحماية النظام. $wpdb الطرق (methods) التي توفرها الفئة (class)… prepare()) لمنع هجمات الاختراق عبر SQL (SQL Injection). تجنب استخدام الدوال غير الآمنة، مثل… eval()قم بتحديث الإضافات الخاصة بك بشكل دوري لإصلاح الثغرات المعروفة.
أين يجب وضع المكونات الإضافية (البرامج الإضافية)؟
يجب وضع إضافات ووردبريس (WordPress plugins) في الموقع الإلكتروني نفسه. /wp-content/plugins/ يمكنك وضع ملف PHP الرئيسي للإضافة مباشرة في المستوى الرئيسي للمجلد، ولكن الطريقة الأكثر تنظيمًا هي إنشاء مجلد فرعي خاص بكل إضافة، ووضع جميع الملفات ذات الصلة (مثل ملفات PHP وJS وCSS والصور، إلخ) داخل هذا المجلد الفرعي. هذا سيجعل هيكل الملفات أكثر وضوحًا ويساعد على تجنب حدوث تعارضات مع إضافات أخرى.
كيف يمكنني إضافة صفحة إعدادات لإضافتي؟
عادةً ما يتضمن إضافة صفحة إعدادات للإضافة عدة خطوات: أولاً، استخدم… add_action( ‘admin_menu’, ‘your_function’ ) يقوم الكود المذكور بتسجيل عنصر جديد في قائمة الإدارة أو قائمة فرعية، ثم يقوم بعرض نموذج HTML للصفحة داخل دالة الاستدعاء العكسي (callback function). بعد ذلك، يتم استخدام هذا النموذج لمزايا أو وظائف register_setting()、add_settings_section() و add_settings_field() استخدم دوال واجهة برمجة التطبيقات (API) الخاصة بالإعدادات (Settings API) لتحديد وربط حقول الإعدادات الخاصة بك؛ حيث ستقوم هذه الدوال تلقائيًا بمعالجة عمليات التحقق من الصلاحيات، وعدم التحقق من صحة ب settings_fields() و do_settings_sections() الدالة مسؤولة عن إخراج الحقول الضرورية.
ما هي "الخطافات" (Hooks)، ولماذا هي مهمة جدًا؟
الخطافات (Hooks) هي نقاط محددة في كود ووردبريس تسمح للإضافات (Plugins) والقوالب (Themes) بـ “التدخل” في عملية تنفيذ الكود الأساسي لووردبريس. تنقسم الخطافات إلى خطافات الإجراءات (Actions) وخطافات المرشحات (Filters). تقوم خطافات الإجراءات بتنفيذ الكود المخصص عند حدوث أحداث معينة، وتُستخدم لإضافة ميزات جديدة. أما خطافات المرشحات فهي تسمح لك بتعديل البيانات قبل استخدامها أو حفظها. نظام الخطافات هو جوهر قابلية توسعة ووردبريس، حيث يتيح للمطورين تغيير سلوك ووردبريس بشكل كبير أو تحسينه دون الحاجة إلى تعديل الملفات الأساسية، مما يضمن نقاء النظام الأساسي وقابليته للترقية.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- دليل شامل لـ WooCommerce: بناء متجر إلكتروني محترف على WordPress من الصفر
- 10 نصائح قيمة لـ WordPress تساعد في تحسين أداء الموقع وتحسين ترتيبه في نتائج محركات البحث (SEO)
- دليل أساسي للمبتدئين: إرشادات شاملة لبناء موقع إلكتروني من الصفر
- دليل إنشاء مواقع ووكوميرس (WooCommerce): الخطوات الكاملة لبناء موقع تجاري إلكتروني محترف من الصفر
- دليل شامل لتحسين سرعة مواقع ووردبريس: من إعدادات الخادم إلى اختيار الإضافات (الأدوات المساعدة) – خطوات عملية لتحسين أداء الموقع