لماذا يتم اختيار تطوير إضافات (plugins) لبرنامج ووردبريس (WordPress)؟
ووردبريس، كأكثر أنظمة إدارة المحتوى شيوعًا على مستوى العالم، يتمتع بقدرة توسعة عالية بفضل الإضافات (البرامج الإضافية). من خلال تطوير إضافات مخصصة، يمكنك إضافة ميزات فريدة إلى النظام الأساسي لتلبية احتياجات الأعمال المحددة، دون الحاجة إلى تعديل ملفات القوالب (الثيمات). هذا يضمن عدم فقدان أكواد الميزات عند تحديث القوالب، كما يجعل الميزات قابلة للتكرار والاستخدام في مواقع إلكترونية مختلفة.
تعلم تطوير الإضافات (plugins) لا يمكّنك فقط من إنشاء منتجات يمكن للآخرين استخدامها، بل يساعدك أيضًا على فهم آليات عمل ووردبريس (WordPress) بشكل أعمق، بما في ذلك نظام الروابط (hooks)، التفاعل مع قواعد البيانات، وأفضل الممارسات في مجال الأمان. إنه خطوة حاسمة للتقدم من مستخدم عادي إلى مطور متقدم.
بناء أول إضافة (plugin) خاصة بك
قبل البدء في كتابة الكود، يجب عليك إنشاء بيئة ووردبريس قياسية على جهازك المحلي أو على خادم اختبار. هذه هي الأساس الذي يعتمد عليه كل عمل التطوير.
القراءة الموصى بها تعلم تطوير إضافات ووردبريس من الصفر: إنشاء أول ميزة مخصصة الخاصة بك。
إنشاء ملف رئيسي للإضافة (plugin main file)
يجب أن يحتوي كل إضافة (plugin) لـ WordPress على ملف رئيسي، وعادة ما يكون هذا الملف مسمى باسم الإضافة نفسها. سنقوم بإنشاء ملف رئيسي باسم…my-first-pluginالإضافة (Plugin). أولاً، في دليل تثبيت WordPress الخاص بك…/wp-content/plugins/داخل المجلد، قم بإنشاء مجلد جديد وأطلق عليه الاسم التالي:my-first-plugin。
داخل هذا المجلد، قم بإنشاء ملف بالاسمmy-first-plugin.phpهذا ملف PHP، وهو نقطة الدخول الرئيسية للإضافة (البرنامج الإضافي). قم بفتحه وأضف التعليقات الخاصة برأس الإضافة أدناه؛ فهذه المعلومات ضرورية جدًا لكي يتعرف ووردبريس على إضافتك.
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个学习WordPress插件开发的示例插件,用于在文章底部添加自定义内容。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ تحقيق أول وظيفة بسيطة.
ميزة كلاسيكية مخصصة للمبتدئين هي إضافة نص تلقائيًا في أسفل محتوى جميع المقالات على الموقع. سنستخدم هذه الميزة مع ووردبريس (WordPress). the_content يتم تنفيذ ذلك باستخدام “خطافات المرشحات” (filter hooks). أضف الدالة التالية أسفل تعليقات بداية ملفك الرئيسي:
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在文章内容末尾添加自定义文本
*
* @param string $content 原始的文章内容。
* @return string 修改后的文章内容。
*/
function mfp_add_footer_text( $content ) {
// 判断是否是主循环且在单篇文章页面
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<div class="mfp-footer-note"><p><em>شكرًا لقراءتكم! تم تقديم هذا المقال من قبل “أول إضافة لي” (My First Plugin).</em></p></div>';
return $content . $custom_text;
}
return $content;
}
// 将函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' ); هذا القطعة من الكود تحدد دالة (function). mfp_add_footer_textإنه يستقبل محتوى المقالات. $content كمعامل، يقوم الدالة أولاً بفحص ما إذا كانت البيئة الحالية تتواجد على صفحة مقال واحد، أو في الدورة الرئيسية، أو في الاستعلام الرئيسي، وذلك لتجنب إضافة النصوص أيضًا إلى الملخصات، أو الأدوات الإضافية، أو أماكن أخرى. إذا تم استيفاء الشروط، فإنها تقوم بإنشاء قطعة نص HTML مخصصة وتضيفها بعد المحتوى الأصلي.
التعمق في بنية الإضافات والأمان
مع زيادة وظائف الإضافات (البرامج الإضافية)، أصبح تنظيم الكود بشكل جيد أمرًا بالغ الأهمية. في الوقت نفسه، تعد الأمان خط الحياة في جميع عمليات تطوير ووردبريس (WordPress).
القراءة الموصى بها إتقان تطوير إضافات ووردبريس: بناء أول وحدة وظيفية توسعية الخاصة بك من الصفر。
إعادة هيكلة الكود باستخدام البرمجة الكائنية الموجهة
لتحسين قابلية الصيانة والتوسعة للكود، يُنصح باستخدام منهجية البرمجة الكائنية (Object-Oriented Programming – OOP) لتنظيم الإضافات (plugins). سنعيد هيكلة الوظائف المذكورة أعلاه لتصبح كلاسًا واحدًا.
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class My_First_Plugin {
/**
* 构造函数,初始化插件钩子。
*/
public function __construct() {
// 在构造方法中将方法挂载到钩子上
add_action( 'init', array( $this, 'load_textdomain' ) );
add_filter( 'the_content', array( $this, 'add_footer_to_content' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
}
/**
* 加载插件的文本翻译域。
*/
public function load_textdomain() {
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
/**
* 在文章内容末尾添加自定义文本。
*/
public function add_footer_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<div class="mfp-footer-note"><p><em>' . esc_html__( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ) . '</em></p></div>';
return $content . $custom_text;
}
return $content;
}
/**
* 为插件添加样式。
*/
public function enqueue_styles() {
wp_enqueue_style( 'mfp-style', plugins_url( 'assets/css/style.css', __FILE__ ), array(), '1.0.0' );
}
}
// 实例化插件类
$my_first_plugin_instance = new My_First_Plugin(); يرجى ملاحظة أننا… add_footer_to_content تم استخدام هذه الطريقة (Method) داخل البرنامج/النظام. esc_html__() هذه دالة تُستخدم لتغليف النصوص. إنها دالة ترجمة في الوقت نفسه، وتقوم أيضًا بتنفيذ عمليات تهجئة مناسبة للنصوص المُنتجة، وهو ما يُعد أفضل ممارسة لعرض النصوص بشكل آمن. لقد أضفنا أيضًا طريقة لتحميل ملفات الأنماط (style sheets)، بالإضافة إلى دعم لحقول النصوص (text fields)، مما يجهز ال
فهم التحقق من البيانات والهروب من الأحرف وتنفيذهما.
لا تثق أبدًا بالبيانات التي يدخلها المستخدمون أو بأي بيانات خارجية. عند استقبال البيانات أو معالجتها أو عرضها، يجب التحقق من صحتها وتنقيتها وتنفيذ إجراءات الحماية اللازمة (مثل تحويل البيانات إلى شكل آمن). على سبيل المثال، إذا كنت تريد إنشاء صفحة إدارة تحتوي على نماذج إدخال، فتأكد من استخدام الدوال المتاحة في ووردبريس للتحق
وظيفة هذا الإضافة بسيطة نسبيًا، ولكننا قمنا بالفعل باستخدامها عند إنتاج النصوص بصيغة HTML. esc_html__() يجب إجراء عملية تهريب (escaping) للبيانات. إذا كانت الإضافة (plugin) بحاجة إلى معالجة البيانات التي يقدمها المستخدمون، مثل تلك المأخوذة من النماذج (forms)، فيجب استخدام طرق معينة لتحويل البيانات إلى شكل ص sanitize_text_field(), wp_kses_post() قم بتنظيف الدوال المعنية واستخدمها… wp_verify_nonce() للتحقق من شرعية الطلب.
إنشاء صفحة لإدارة الإضافات (Plugins)
عادةً ما يحتاج الإضافة (البرنامج الإضافي) الناضج إلى صفحة تكوين في الخلفية (الواجهة الخلفية للنظام). سنتعلم كيفية استخدام واجهة برمجة التطبيقات (API) الخاصة بإعدادات ووردبريس (WordPress) لإنشاء صفحة إ
إضافة قائمة إعدادات الإضافات
أولاً، نحتاج إلى إضافة صفحة قائمة فرعية تحت قائمة “الإعدادات” في واجهة ووردبريس الخلفية. أضف طريقة جديدة إلى فئتك (class)، وفي دالة الإنشاء (constructor)، قم بتنفيذ اللازم لإضافة هذه الصفحة الفر add_action('admin_menu', ...) الخطاف (hook) يستدعيه.
القراءة الموصى بها دليل للمبتدئين في تطوير الإضافات في ووردبريس: بناء أول إضافة وظيفية لديك من الصفر.。
/**
* 注册插件管理页面。
*/
public function register_admin_menu() {
add_options_page(
__( '我的插件设置', 'my-first-plugin' ), // 页面标题
__( '我的第一个插件', 'my-first-plugin' ), // 菜单标题
'manage_options', // 所需权限
'mfp-settings', // 菜单slug
array( $this, 'display_settings_page' ) // 显示页面的回调函数
);
} ثم، أضف الكود التالي إلى دالة الإنشاء (constructor):add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );。
إنشاء صفحة إعدادات وحقول
بعد ذلك، نحتاج إلى تحديد… display_settings_page طريقة لتقديم محتوى HTML الخاص بصفحة الإعدادات، واستخدام واجهة برمجة التطبيقات (API) الخاصة بالإعدادات لتسجيل حقل إعداد معين.
/**
* 显示插件设置页面。
*/
public function display_settings_page() {
?>
<div class="wrap">
<h1></h1>
<form action="/ar/options.php/" method="post" data-trp-original-action="options.php">
<?php
// 输出设置字段、非ce等安全字段
settings_fields( 'mfp_settings_group' );
do_settings_sections( 'mfp-settings' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="ar"/></form>
</div>
<?php
}
/**
* 初始化插件设置。
*/
public function initialize_settings() {
// 注册一个设置
register_setting(
'mfp_settings_group', // 设置组名
'mfp_footer_text', // 选项名
array(
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field', // 清理回调函数
'default' => __( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ),
)
);
// 添加一个设置区域
add_settings_section(
'mfp_main_section',
__( '主要设置', 'my-first-plugin' ),
null, // 可选的区域描述回调函数
'mfp-settings'
);
// 向区域中添加字段
add_settings_field(
'mfp_footer_field',
__( '页脚文本', 'my-first-plugin' ),
array( $this, 'render_footer_field' ), // 渲染字段的回调函数
'mfp-settings',
'mfp_main_section',
array( 'label_for' => 'mfp_footer_text' )
);
} أنت بحاجة إلى تحديد ما يجب تعريفه بالضبط. هل تحتاج إلى تعريف كلمة معينة، مفهوم، أو مصطلح؟ هل يمكنك تقديم المزيد من التفاصيل حتى أتمكن من مساعدتك بشكل أفضل؟ render_footer_field طريقة لعرض مربع الإدخال الفعلي وتحديث المحتوى السابق. add_footer_to_content طريقة لجعله يأتي من خيارات قاعدة البيانات get_option('mfp_footer_text') يتم قراءة النص من الملف، بدلاً من استخدام سلاسل نصية محفوظة مسبقًا (مُكدسة في الكود). وأخيرًا، أضف الكود التالي إلى دالة الإنشاء (المُنشئ):add_action( 'admin_init', array( $this, 'initialize_settings' ) );。
الملخصات
خلال رحلتك مع هذا المقال، بنيت برنامج إضافة (plugin) كامل الوظائف لموقع ووردبريس (WordPress) من الصفر. تعلمت كيفية إنشاء الهيكل الأساسي للإضافة، واستخدام ميزات “الأفعال” (actions) و“خطافات المرشحات” (filter hooks) لتوسيع وظائف ووردبريس، وتنظيم الكود بطريقة توجهية الكائنات (object-oriented) لتحسين جودته، واتباع أفضل الممارسات الأمنية للتحقق من البيانات وتهريبها (data validation and escaping)، بالإضافة إلى استخدام واجهة برمجة التطبيقات الخاصة بإعدادات ووردبريس (WordPress Settings API) لإنشاء واجهة إدارة خلفية محترفة.
جوهر تطوير الإضافات (البرامج الإضافية لموقع ووردبريس) يكمن في فهم نظام “الخطافات” (hooks) وتدفق البيانات (data flow) الخاص بووردبريس. يجب الممارسة المستمرة، بدءًا من الميزات البسيطة وزيادة التعقيد تدريجيًا، مع الحرص دائمًا على أمان الموقع وأدائه وسهولة صيانته. مع تراكم الخبرة، ستتمكن من تطوير إضافات قوية ومحترفة ومحبوبة من قبل المستخدمين.
الأسئلة الشائعة الأسئلة المتداولة
ما هي المعرفة الأساسية المطلوبة لتطوير إضافات (Plugins) لمنصة ووردبريس (WordPress)؟
يجب أن تمتلك معرفة قوية بلغة البرمجة PHP، نظرًا لأن الإضافات (البرامج الإضافية) مكتوبة بشكل أساسي بلغة PHP. بالإضافة إلى ذلك، من الضروري أن يكون لديك فهم أساسي للغات HTML وCSS وJavaScript، حيث ستحتاج إلى التعامل مع عرض المحتوى والتفاعلات على الجانب الأمامي (الواجهة الخاصة بالمستخدم). الأهم من ذلك كله، أن تكون على دراية تامة بمفاهيم WordPress الأساسية، مثل "الخطافات" (الإجراءات والمرشحات)، والحلقات (التكرارات في الكود)، وهيكل القوالب، بالإضافة إلى عمليات التعامل مع قواعد البيانات باستخدام كلاسات مثل WP_Query وWP_User_Query.
كيف أقوم بتصحيح الأخطاء (التصحيح) واختبار إضافتي (البرنامج الإضافي)؟
أولاً، ننصح بشدة باستخدام بيئة التطوير المحلية (مثل Local by Flywheel أو XAMPP) أو موقع اختبار عبر الإنترنت أثناء عملية التطوير، لتجنب التأثير على الموقع الإلكتروني الرسمي. قم بتفعيل وضع التصحيح (Debug Mode) في ووردبريس، ثم…wp-config.phpتم تعيين الإعدادات في الملف.define( 'WP_DEBUG', true );سيؤدي ذلك إلى عرض أخطاء PHP وتحذيراتها على الشاشة. استخدمه.error_log()تقوم الدالة بتسجيل معلومات التصحيح المخصصة في سجل الأخطاء للخادم. بالنسبة لعمليات التصحيح الأكثر تعقيدًا، يمكن النظر في استخدام إضافات تصحيح متخصصة مثل Query Monitor أو Debug Bar.
كيف يمكن لإضافتي (البرنامج الإضافي) أن تتوافق مع إصدارات مختلفة من ووردبريس (WordPress)؟
أثناء عملية التطوير، يجب الانتباه إلى الإشعارات الموجودة في الوثائق الرسمية لووردبريس حول الدوال المهجورة (deprecated functions). يجب تجنب استخدام الدوال التي تم تصنيفها على أنها “مهجورة”. في ملف الإضافة الرئيسي (plugin’s main file)، يمكن ذلك عRequires at leastوTested up toيجب استخدام معلومات الرأس (header information) للإعلان عن إصدارات ووردبريس (WordPress) المتوافقة معها. قم باختبار إضافاتك بشكل دوري على إصدارات ووردبريس الأحدث، وتابع سجلات التحديثات الأساسية (core updates) لتتمكن من تعديل الكود في الوقت المناسب.
كيف يمكنني نشر إضافتي في الدليل الرسمي للإضافات الخاص بووردبريس (WordPress Plugin Directory)؟
أولاً، يجب عليك التأكد من أن الإضافة (البرنامج الإضافي) الخاصة بك تتوافق تمامًا مع المعايير الرسمية لتطوير الإضافات وإرشادات التقديم. وهذا يشمل جودة الكود، والأمان، واتفاقية الترخيص (يجب أن تكون GPLv2 أو إصدار أعلى). بعد ذلك، قم بتقديم طلب للحصول على مستودع SVN على موقع WordPress.org. ثم قم بتحميل كود الإضافة الخاص بك إلى هذا المستودع SVN.trunkموجود في الدليل، وتم إنشاء الملفات المقابلة له.readme.txtملف (بتنسيق معين). بعد الموافقة على المراجعة، سيظهر الإضافة الخاصة بك في الدليل الرسمي.
ما التالي، ما التالي؟
القراءة الموسعة والمعرفة العملية
فيما يلي بعض الموضوعات ذات الصلة بموضوع هذه المقالة وهي مناسبة لمزيد من القراءة المتعمقة. وغالباً ما يكون من الأفضل إعطاء الأولوية للبدء بالمقال الأقرب إلى مشكلتك الحالية ثم التوسع تدريجياً إلى المواضيع المحيطة.
- دليل تطوير إضافات ووردبريس: كيف تبني إضافتك المخصصة الأولى من الصفر
- كيف تصبح مطورًا لإضافات ووردبريس: دليل شامل من الصفر إلى النهاية
- البدء من الصفر: العملية الكاملة لتطوير مواقع ووردبريس الحديثة وأفضل الممارسات
- دليل شامل لتطوير إضافات ووردبريس: من المبتدئين إلى الخبراء في إنشاء إضافات متخصصة
- من الصفر إلى الواحد: إتقان التقنيات الأساسية وعمليات التطوير العملية لمواقع ووردبريس بشكل شامل