فهم الهيكل الأساسي لإضافات ووردبريس (WordPress Plugins)
قبل الغوص في التفاصيل الدقيقة للكود، من المهم جدًا فهم المكونات الأساسية لأي إضافة (plugin) في ووردبريس (WordPress). في الأساس، الإضافة عبارة عن ملف أو مجموعة من الملفات تُوضع في مسار معين داخل نظام ووردبريس، وتwp-content/plugins/الملفات PHP الموجودة في المجلد… جوهر هذه الملفات هو ملف رئيسي يحتوي على معلومات الوصف الخاصة بالإضافة (البرنامج الإضافي)، ويتم إخبار ووردبريس بوجود هذه الإضافة من خلال كتلة تعليقات بتنسيق خاص.
ملف الدخول الرئيسي للإضافة (plugin)، على سبيل المثال، إذا سميناه…my-first-plugin.phpيجب أن يحتوي الملف على تعليق خاص في بدايته يُعرف بـ "التعليق الخاص برأس الملف" (file header comment). يحدد هذا التعليق اسم الإضافة (plugin)، ووصفها، وإصدارها، ومؤلفها، وغيرها من المعلومات، وهو الأساس الوحيد الذي يعتمد عليه ووردبريس (WordPress) للتعرف على الإضافة وتحميلها. يمكن أن تتكون الإضافة الأساسية من هذا الملف وحده، وتقوم باستخدام واجهات برمجة التطبيقات (APIs) المتاحة في ووردبريس، مثل خطافات الأفعال (Action Hooks) وخطافات المرشحات (Filter Hooks)، لتعديل أو توسيع وظائف الموقع.
يمكن أن تكون وظائف الإضافات (plugins) بسيطة للغاية، مثل إضافة سطر نصي في أسفل الصفحة؛ أو يمكن أن تكون معقدة للغاية، مثل إنشاء نظام تجارة إلكتروني كامل. بغض النظر عن مدى تعقيد الإضافة، فإن عملية تطويرها تتبع نفس النمط الأساسي: أولاً، إنشاء هيكل الملفات الصحيح في المكان المناسب؛ ثم كتابة الكود وتثبيته ضمن دورة حياة ووردبريس (WordPress)؛ وأخيرًا، إجراء التكوينات اللازمة والتفاعلات من خلال واجهة إدارة ووردبريس الخلفية.
القراءة الموصى بها دليل البدء في تطوير إضافات ووردبريس: كيفية إنشاء أول إضافة خاصة بك من الصفر。
قم بإنشاء أول إضافة (plugin) خاصة بك.
دعونا نمارس عملية إنشاء أبسط إضافة (plugin) من خلال مثال كلاسيكي وهو “Hello World”. وظيفة هذه الإضافة هي عرض رسالة تحية في أعلى محتوى المقالات على كل صفحة من صفحات الموقع.
أولاً، يجب عليك القيام بذلك على الجهاز المحلي أو على الخادم.wp-content/plugins/قم بإنشاء مجلد جديد داخل المجلد الحالي، وأطلق عليه الاسم التالي:my-hello-pluginثم، قم بإنشاء ملف PHP رئيسي داخل هذا المجلد، وسنسميه…my-hello-plugin.php。
كتابة الملف الرئيسي للإضافة (plugin)
افتحmy-hello-plugin.phpقم بتحميل الملف، ثم أدخل الكود التالي. هذا الكود يتبع تنسيق معايير إضافات ووردبريس (WordPress plugins)، ويحتوي على رأس معلومات الإضافة (plugin information header) بالإضافة إلى الكود الذي يقوم بتنفيذ الوظائف المطلوبة.
<?php
/**
* Plugin Name: 我的问候插件
* Plugin URI: https://yourwebsite.com/my-hello-plugin
* Description: 这是一个简单的插件,用于在文章内容前输出“您好,读者!”。
* Version: 1.0.0
* Author: 你的名字
* License: GPL v2 or later
* Text Domain: my-hello-plugin
*/
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在主文章内容前添加问候语。
*
* @param string $content 原始的文章内容。
* @return string 添加了问候语后的新内容。
*/
function my_hello_add_greeting( $content ) {
$greeting = '<p style="background-color:#f0f8ff; padding:10px; border-left:4px solid #0073aa;"><strong>مرحبًا، عزيزي القارئ! نرحب بك في قراءة هذا المقال.</strong></p>';
// 只在主循环且是文章页面时添加
if ( is_single() && in_the_loop() && is_main_query() ) {
return $greeting . $content;
}
return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'my_hello_add_greeting' ); قم بتفعيل الإضافة (البرنامج الإضافي) ثم اختبرها.
قم برفع المجلد الذي يحتوي على هذا الملف إلى الخادم.wp-content/plugins/قم بوضع الملفات في المجلد المناسب، أو إذا كنت تطور موقعك محليًا، فضعها مباشرة في المكان المطلوب. بعد ذلك، سجل الدخول إلى واجهة خلفية WordPress الخاصة بك وانتقل إلى قائمة “الإضافات” (Plugins). يجب أن تتمكن من رؤية إضافة “My Greeting Plugin” في قائمة الإضافات. انقر على زر “تفعيل” (Enable).
بعد التفعيل، عند زيارة أي مقالة أو صفحة على الموقع، ستلاحظ ظهور رسالة ترحيبية ذات خلفية زرقاء فاتحة وحافة على الجانب الأيسر قبل بدء محتوى المقالة نفسه. هذه العملية توضح بشكل واضح الخطوات الأساسية في تطوير الإضافات (البرامج الإضافية لموقع ووردبريس): إنشاء الملفات اللازمة، استخدام الأدوات المناسبة لإضافة الميزات الجديدة، وتفعيل الإضافة في الخلفية. لقد خطوت بنجاح الخطوة الأولى في تطوير إضافة لموقع ووردبريس الخاص
القراءة الموصى بها تطوير إضافات ووردبريس: بناء توسعات قوية لمواقع الويب من الصفر。
استخدم الخطافات (hooks) والمرشحات (filters) لتوسيع الوظائف.
تعود مرونة وقابلية توسيع ووردبريس إلى حد كبير إلى نظام “الخطافات” (Hooks) الخاص به. تنقسم الخطافات إلى فئتين: خطافات الإجراءات (Actions) وخطافات المرشحات (Filters). فهم واستخدام هذه الخطافات بشكل ماهر أمر أساسي لتطوير الإضافات المتقدمة.
تسمح خيوط الأعمال (Action Hooks) بإدراج وتنفيذ الكود الخاص بك في أوقات محددة أثناء تشغيل ووردبريس، مثل عند نشر مقالة أو تحميل صفحة. على سبيل المثال،save_postتتم تنفيذ العمليات (الأفعال) عندما يتم حفظ المقال أو الصفحة في قاعدة البيانات. يمكنك القيام بذلك عن طريق…add_action()تقوم الدالة بـ “تثبيت” الدالة المخصصة الخاصة بك على هذا الحلقة (hook).
معايير الفلتر (filter hooks) تسمح لك بتعديل البيانات التي يولدها ووردبريس أثناء عملية المعالجة. تقوم بتسجيل دالة في إحدى هذه المعايير، وعندما يقوم ووردبريس بتنفيذ هذا الفلتر، يتم تمرير البيانات إلى جميع الدوال المسجلة، ويتم استقبال القيمة المعدلة الناتجة عن معالجتها. الدالة المستخدمة في المثال أعلاه…the_contentإنها مثال نموذجي على "خطافات المرشحات" (filter hooks)، والتي تسمح لك بتعديل محتوى المقال الذي سيتم عرضه لاحقًا.
إنشاء خيار إداري بسيط
عادةً ما يحتاج الإضافة (البرنامج الإضافي) المفيد حقًا إلى بعض الخيارات التي يمكن للمستخدمين تكوينها بأنفسهم. وهذا يتطلب التفاعل مع واجهة ووردبريس الخلفية (الواجهة البرمجية الخاصة بإدارة الموقع). سنوضح كيفية إضافة صفحة إعدادات
أولاً، نستخدم…add_action(‘admin_menu’, …)لنقم بتسجيل دالة تقوم بإنشاء عنصر قائمة جديد في الواجهة الخلفية للإدارة.
/**
* 在WordPress后台添加一个自定义菜单页面。
*/
function my_hello_add_admin_menu() {
add_menu_page(
‘问候插件设置’, // 页面标题
‘问候插件’, // 菜单标题
‘manage_options’, // 所需权限
‘my-hello-plugin’, // 菜单slug
‘my_hello_admin_page_html’, // 用于显示页面内容的回调函数
‘dashicons-format-chat’, // 图标(可选)
80 // 菜单位置(可选)
);
}
add_action( ‘admin_menu‘, ’my_hello_add_admin_menu’ );
/**
* 自定义设置页面的HTML输出。
*/
function my_hello_admin_page_html() {
// 检查用户权限
if ( ! current_user_can( ‘manage_options’ ) ) {
return;
}
?>
<div class="“wrap”">
<h1></h1>
<form action="/ar/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
<?php
// 输出设置字段、安全性和保存更改按钮
settings_fields( ‘my_hello_options’ );
do_settings_sections( ‘my-hello-plugin’ );
submit_button( ‘保存问候语设置’ );
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
أنا لا أعرف ماذا أقول. حقول إعدادات التسجيل والإخراج
الصفحات وحدها لا تكفي؛ نحتاج إلى إنشاء خيارات يمكن حفظها. ولذلك، سنحتاج إلى استخدام…add_action(‘admin_init’, …)وكذلكregister_setting()、add_settings_section()وadd_settings_field()ومجموعة من الدوال الأخرى.
القراءة الموصى بها من المبتدئين إلى الخبراء: دليل شامل لتطوير إضافات ووردبريس (WordPress Plugins)。
/**
* 初始化插件的设置。
*/
function my_hello_settings_init() {
// 注册一个设置项到数据库的‘my_hello_options’键下
register_setting( ‘my_hello_options‘, ’my_hello_greeting_text’ );
// 在页面中添加一个设置区域
add_settings_section(
‘my_hello_section’, // 区域ID
‘问候语设置’, // 区域标题
‘my_hello_section_html’, // 区域描述的回调函数
‘my-hello-plugin’ // 所属页面slug
);
// 在区域内添加一个具体的设置字段
add_settings_field(
‘my_hello_field’, // 字段ID
‘自定义问候语’, // 字段标签
‘my_hello_field_html’, // 用于渲染字段HTML的回调函数
‘my-hello-plugin’, // 所属页面slug
‘my_hello_section’ // 所属区域ID
);
}
add_action( ‘admin_init‘, ’my_hello_settings_init’ );
/**
* 设置区域的描述信息。
*/
function my_hello_section_html() {
echo ‘<p>قم بتعيين محتوى رسالة الترحيب التي ستظهر في بداية المقال هنا.</p>’;
}
/**
* 渲染设置字段的HTML。
*/
function my_hello_field_html() {
// 从数据库获取已保存的值,如果没有则使用默认值
$greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
?>
<input type="‘text’"
id="‘my_hello_greeting_text’"
name="‘my_hello_greeting_text’"
value="“NO NUMERIC NOISE KEY" 1000”
class="“regular-text”" />
<p class="“description”">الرجاء إدخال الرسالة التحية التي ترغب في عرضها قبل محتوى المقال.</p>
أنا لا أعرف ماذا أقول. الآن، لدينا صفحة إعدادات الخلفية التي تحتوي على مربع إدخال. في الخطوة التالية، نحتاج إلى تعديل الدوال الوظيفية الأصلية.my_hello_add_greetingدعه يقرأ التحيات من خيارات قاعدة البيانات.
function my_hello_add_greeting( $content ) {
// 获取保存的自定义问候语,如果不存在则使用默认值
$custom_greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
$greeting = ‘<p style="“background-color:#f0f8ff;" padding:10px; border-left:4px solid #0073aa;”><strong>’ . esc_html( $custom_greeting ) . ‘</strong></p>’;
if ( is_single() && in_the_loop() && is_main_query() ) {
return $greeting . $content;
}
return $content;
} وبذلك، تم إنشاء إضافة (plugin) تتمتع بوظائف الإعدادات الأساسية للواجهة الخلفية (backend). يمكن للمستخدمين تعديل نصوص التحيات بحرية من خلال قائمة “إضافة التحيات” (Greeting Plugin) في الواجهة الخلفية، وسيتم تطبيق أحدث الإعدادات تلق
أفضل الممارسات والإجراءات الأمنية في تطوير الإضافات (Plugins)
تطوير إضافة (Plugin) لبرنامج ووردبريس (WordPress) يمكن للآخرين استخدامها يتطلب ليس فقط أن تكون الوظائف المتاحة فيها كاملة ومتقنة، بل يجب أيضًا أن تتبع أفضل الممارسات فيما يتعلق بالأمان (Security)،
اعتبارات الأمان
الأمان هو المبدأ الأساسي. لا تثق أبدًا بالبيانات التي يدخلها المستخدمون. جميع البيانات التي تحصل عليها من المستخدمين (مثل…)$_GET、$_POST、$_COOKIEقبل استخدام البيانات في عمليات الاستعلام عن القواعد البيانات، أو عرضها على الصفحات، أو إجراء عمليات على الملفات، يجب تنظيفها والتحقق من صحتها وتهريب الرموز المخاطرة (المعروفة باسم “التهريب”
بالنسبة للبيانات المُرسلة إلى صفحة HTML، يتم استخدام…esc_html()、esc_attr()أوwp_kses_post()يجب استخدام دوال مثل الدالة `escape()` لتحويل القيم إلى شكل مناسب قبل استخدامها في استعلامات قواعد البيانات. بالنسبة للمتغيرات المستخدمة في استعلامات قواعد البيانات، يجب التأكد من استخدام هذه الدوال لتجنب مشاكل$wpdb->prepare()يجب استخدام الطرق المناسبة لإجراء الاستعلامات المعتمدة على المعاملات (parameterized queries)، وتجنب دمج المتغيرات مباشرةً في جمل SQL. في الإضافات (plugins)، يجب دائمًا اتباع هذه الممارسة.defined(‘ABSPATH’) or die;لمنع الوصول المباشر إلى الملفات.
تنظيم الكود والتدويل (Code Organization and Internationalization)
مع نمو وظائف الإضافات (البرامج الإضافية)، يصبح من الصعب الحفاظ على الكود عند كتابته في ملف واحد رئيسي. الطريقة المناسبة هي تقسيم الكود حسب الوظيفة إلى ملفات منفصلة. عادةً، يكون الملف الرئيسي مسؤولاً عن تعريف الوظائف الأساسية والعمليات الأساسية للبرنامج، بينما يتم وضع صفحات الإعدادincludes/أوadmin/、public/في مثل هذه الدلائل الفرعية، ومن خلال…require_onceإدخال.
لكي يتمكن مستخدموك حول العالم من استخدام الإضافة الخاصة بك، يجب أن تدعم الترجمة الدولية (i18n). وهذا يعني أن جميع النصوص المعروضة داخل الإضافة يجب أن تستخدم دوال ترجمة ووردبريس (WordPress’s translation functions).__()、_e()قم بتغليف المنتجات، وقدمها بطريقة لائقة.Text Domainقم بتعيين معرف فريد (مثل اسم مجلد الإضافة). لقد قمنا بتعريفه بالفعل في كتلة التعليقات في بداية الملف.Text Domain: my-hello-pluginيجب استخدامه في الكود بهذه الطريقة:
$greeting = ‘<p><strong>’ . esc_html__( ‘您好,读者!欢迎阅读本文。’ , ’my-hello-plugin’ ) . ‘</strong></p>’; بهذه الطريقة، يمكن لمترجمي الاستفادة منها..poو.moالملف يحتوي على ترجمات للغات المختلفة لإضافتك (البرنامج الإضافي).
تحسين الأداء
يجب أن تقلل الإضافات (البرامج الإضافية) من تأثيرها على أداء الموقع قدر الإمكان. يجب تجنب إجراء عدد كبير من عمليات الاستعلام عن البيانات من قاعدة البيانات أو الحسابات المعقدة في كل مرة يتم فيها تحميل الصفحة، خاصةً في الجزء الأمامي (الواجهة الأمامية للموقع). استخدم بشكل مناسب واجهة برمجة التطبيقات الخاصة بذاكرة التخزين المؤقتة في ووردبريس (WordPress’s Transients API) لتخزين نتائج الاستعلامات التي لا تتغير بشكل متكرر والتي قد تستهلك موارد كبيرة. على سبيل المثال
$data = get_transient( ‘my_plugin_api_data’ );
if ( false === $data ) {
// 数据不存在或已过期,从API获取
$data = wp_remote_retrieve_body( wp_remote_get( ‘https://api.example.com/data’ ) );
// 将数据存储12小时
set_transient( ‘my_plugin_api_data’, $data, 12 * HOUR_IN_SECONDS );
}
// 使用 $data بالإضافة إلى ذلك، تأكد من تحميل ملفات CSS و JavaScript الخاصة بك فقط على الصفحات التي تحتاجها. استخدم أدوات مثل… (يمكن إضافة اسم الأداة هنا).wp_enqueue_script()وwp_enqueue_style()الدالة، مع استخدام الخطافات المناسبة (مثل…)wp_enqueue_scriptsيتم استخدام (…) لتحميل موارد الواجهة الأمامية (الجزء الذي يتفاعل مع المستخدم)، بينما يتم استخدام (…) لتحميل موارد الخلفية (الجزء الذي يتعامل مع عمليات الخادم أو البيانات).admin_enqueue_scriptsخطاف.
الملخصات
من خلال الإرشادات التدريجية في هذا المقال، أكملنا رحلة التطوير الكاملة من إنشاء إضافة بسيطة مثل “Hello World” إلى إضافة عملية تحتوي على خيارات تكوين في الخلفية وتتبع مبادئ أساسية للأمان وتنظيم الكود. الأمر الأساسي هو فهم واستخدام آليات ووردبريس الأساسية: نظام الخطافات (Hooks). يسمح لنا هذا النظام بتوسيع وظائف المنصة بطريقة معيارية وغير تدخلية. سواء كان الأمر يتعلق بتعديل المحتوى (المرشحات – Filters) أو تنفيذ مهام معينة (الإجراءات – Actions)، فإن الخطافات تعمل كجسر يربط كودك بعالم ووردبريس.
تذكّر أن تطوير الإضافات (plugins) الممتاز لا يقتصر فقط على جعل الميزات تعمل بشكل صحيح؛ بل يشمل أيضًا معالجة بيانات المستخدمين بشكل آمن، تنظيم الكود بشكل واضح، دعم التعددية اللغوية (internationalization)، والاهتمام الدقيق بأداء الموقع الإلكتروني. يبدأ الأمر من تحديد محتويات رأس ملف الإضافة (plugin header) بشكل واضح، مرورًا باستخدام واجهات برمجة التطبيقات (APIs) القياسية لإنشاء القوائم والإعدادات، وانتهاءً بتنفيذ عمليات تحويل البيانات بطريقة آمنة. كل خطوة من هذه الخطوات تؤثر على جودة الإضافة وأمانها وتجربة المستخدم. استمر في استكشاف واجهات برمجة التطبيقات والدوال المتاحة في ووردبريس (
الأسئلة الشائعة الأسئلة المتداولة
ما هي المهارات الأساسية المطلوبة لتطوير الإضافات (plugins)؟
يجب أن تمتلك معرفة أساسية بلغة البرمجة PHP، وتشمل هذه المعرفة المفاهيم الأساسية مثل المتغيرات (variables)، الدوال (functions)، المصفوفات (arrays)، التحكم في الشروط (conditionals)، والحلقات (loops). كما أن وجود فهم أساسي للغات HTML وCSS مفيد للغاية، لأن الإضافات (plugins) غالبًا ما تحتاج إلى إنشاء أو تعديل واجهات المستخدم الأمامية (front-end interfaces). بالإضافة إلى ذلك، فإن معرفة الاستخدام الأساسي لبرنامج WordPress وهيكله الخلفي (backend structure) ستساعد في جعل ع
كيف أقوم بتصحيح أخطاء (التصحيح) في إضافة (Plugin) ووردبريس الخاصة بي؟
أولاً، تأكد من أن…wp-config.phpتم تفعيل وضع التصحيح (Debugging Mode) لبرنامج ووردبريس (WordPress) داخل الملف. هذا يتم عن طريق إعدادات معينة.define('WP_DEBUG', true);وdefine('WP_DEBUG_LOG', true);سيتم تسجيل رسائل الخطأ في…wp-content/debug.logفي الملفات، هذا أكثر أمانًا من عرض المعلومات مباشرة على الصفحة. بالإضافة إلى ذلك، يمكن استخدام هذه الطريقة بالتزامن مع وسائل أخرى لتعزيز الأمان.error_log()يمكن للدالة طباعة قيم المتغيرات، أو يمكن استخدام أدوات المطور في المتصفح مثل أقسام “الشبكة” (Network) و“الوحدة التحكم” (Console) لفحص مشاكل الكود البرمجي الأمامي (الفريمونت) والأنماط (styles).
هل يمكنني رفع الإضافة (البرنامج الإضافي) التي طورتها إلى الدليل الرسمي للإضافات؟
نعم، ولكن يجب استيفاء متطلبات الإرسال الرسمية للإضافات الخاصة بووردبريس (WordPress). وتشمل هذه المتطلبات التأكد من أن إضافتك تتبع رخصة GPL المتوافقة، والالتزام بمعايير الكود المعتمدة في ووردبريس، وضمان أمان الكود وعدم وجود أي محتوى ضار فيه، بالإضافة إلى توفير وثائق توضيحية واضحة. قبل الإرسال، ننصحك بقراءة دليل مطوري الإضافات وإرشادات الإرسال الرسمية المتاحة على موقع ووردبريس. يتم مراجعة عملية الإرسال عبر نظام إرسال الإضافات المتاح على موقع WordPress.org.
ما الفرق بين وظائف الإضافات (Plugins) والقوالب (Themes)؟ ومتى يجب تطوير إضافة (Plugin)؟
الموضوع (Theme) يتحكم بشكل أساسي في مظهر وتنسيق الموقع الإلكتروني، وعادةً ما يشمل ملفات القوالب (Templates)، وملفات الأنماط (Style Sheets)، بالإضافة إلى بعض الميزات المتعلقة بالعرض. أما الإضافات (Plugins) فهي تُستخدم لإضافة أو تعديل وظائف الموقع، وتأثيرها غالبًا ما يكون غير مرتبط بالموضوع المستخدم حاليًا. هناك مبدأ جيد يمكن اتباعه: إذا كانت وظيفة ما مرتبطة مباشرة بمظهر الموقع (مثل تنسيق الصفحات أو ألوانها)، فيمكن النظر في تضمينها ضمن الموضوع نفسه؛ أما إذا كانت وظيفة عامة ومستقلة (مثل نماذج الاتصال، أو تحسينات البحث في محركات البحث (SEO)، أو التخزين المؤقت للبيانات)، وكان من الضروري أن تكون متوفرة بغض النظر عن الموضوع المستخدم، فيجب تطويرها كإضافة (Plugin). هذا يساعد على فصل الوظائف عن التصم
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- مقدمة: لماذا اختيار استخدام ووردبريس (WordPress) للتطوير؟
- لماذا تم اختيار WooCommerce كحل لمتجرك الإلكتروني؟
- دليل شامل لـ WooCommerce: بناء متجرك الإلكتروني واستراتيجيات المبيعات الخاصة بك من الصفر
- 10 إضافات WordPress أساسية لتحسين أداء الموقع وأمانه بشكل شامل
- دليل الووكوميرس الشامل: بناء موقعك التجاري على ووردبريس من الصفر