2026年11月12日

2026年11月12日

كلمات مرور التطبيقات في WordPress: الإنشاء والحذف وREST API

هذه المقالة نسخة مُوطَّنة من الأصل الياباني. اقرأ الأصل الياباني

كلمة مرور التطبيق (Application Password) كلمة مرور مخصصة لتسليمها إلى REST API أو الأدوات الخارجية، أُضيفت في WordPress 5.6. بها لا تضطر إلى إعطاء كلمة مرور تسجيل الدخول الأصلية، وتُنشأ لكل أداة على حدة ويمكن إلغاء ما لم تعد بحاجة إليه وحده. تشرح هذه المقالة شروط الاستخدام، وطرق الإنشاء والحذف (لوحة التحكم وWP-CLI وPHP)، والاستخدام مع REST API، وما يُتحقق منه عند تعذّر النجاح. المحتوى وفق مراجعة وثائق WordPress الموجّهة للمطورين وشيفرته المصدرية في نوفمبر 2026.

ما يمكن وما لا يمكن لكلمات مرور التطبيقات

  • تُستخدم في المصادقة مع REST API وXML-RPC. وفي REST API يُرسل اسم المستخدم وكلمة مرور التطبيق بمصادقة Basic.
  • لا تُستخدم في تسجيل الدخول إلى لوحة التحكم (wp-login.php). فهي ليست لتسجيل دخول شخص، بل للبرامج والأدوات.
  • صلاحياتها هي صلاحيات المستخدم الذي أنشأها نفسه. فإذا أنشأها مدير صارت للأداة التي تحملها كل صلاحيات المدير. وإذا أردت أن تُسلَّم الأداة النشر فقط فأنشئ مستخدمًا بدور كاتب أو محرر وأصدرها له.
  • يمكن إلغاؤها واحدة واحدة. ويُسجَّل أيضًا تاريخ آخر استخدام وعنوان IP.

شروط الاستخدام

لا تُستخدم كلمات مرور التطبيقات افتراضيًا إلا في موقع يعمل بـ HTTPS أو موقع نوع بيئته local. وهذا هو فحص WordPress (wp_is_application_passwords_supported()).

return is_ssl() || 'local' === wp_get_environment_type();

في موقع يعمل بـ HTTP فقط لا يظهر هذا البند في شاشة الملف الشخصي، لأن كلمة المرور ستُرسل عبر اتصال غير مشفَّر.

الإنشاء من لوحة التحكم

  1. افتح «المستخدمون ← الملف الشخصي» (Users → Profile). (ولمستخدم آخر عدّل المستخدم المطلوب من «المستخدمون ← جميع المستخدمين»).
  2. في قسم «كلمات مرور التطبيقات» (Application Passwords) في الأسفل، اكتب في «اسم كلمة مرور التطبيق الجديدة» (New Application Password Name) اسمًا يدل على الغرض (مثل: سكربت النشر، Zapier).
  3. اضغط «إضافة كلمة مرور تطبيق جديدة» (Add New Application Password). (وفي بعض الإصدارات تظهر بصيغة أخرى قريبة).
  4. دوّن كلمة المرور المكوّنة من 24 حرفًا التي تظهر. فإذا غادرت هذه الشاشة فلن تظهر مرة أخرى.

تُعرض كلمة المرور بفراغات بعد كل 4 أحرف مثل abcd EFGH 1234 ijkl MNOP 6789، لكن تنجح المصادقة بوجود الفراغات أو بدونها.

وللإلغاء اضغط زر الإلغاء في صف الهدف ضمن القائمة في القسم نفسه. ويمكنك إلغاء الجميع دفعة واحدة بـ «إلغاء جميع كلمات مرور التطبيقات» (Revoke all application passwords).

الإنشاء والعرض والحذف بـ WP-CLI

# الإنشاء (استخدم --porcelain لعرض كلمة المرور فقط)
wp user application-password create admin "سكربت النشر" --porcelain

# عرض القائمة (يُستخدم uuid في الحذف)
wp user application-password list admin --fields=uuid,name,created,last_used,last_ip

# حذف واحدة
wp user application-password delete admin 6633824d-c1d7-4f79-9dd5-4586f734d69e

# حذف كل ما يخص هذا المستخدم
wp user application-password delete admin --all

الجزء admin يقبل اسم المستخدم أو عنوان البريد أو معرّف المستخدم. واستبدل uuid بالقيمة الظاهرة في نتيجة list.

الإنشاء والعرض والحذف بـ PHP

إذا تعاملت معها من إضافة ونحوها فاستخدم الفئة WP_Application_Passwords.

<?php
$user_id = 2; // معرّف المستخدم المستهدف

// الإنشاء. عند النجاح تُعاد مصفوفة [كلمة المرور النصية, المعلومات المحفوظة]
$result = WP_Application_Passwords::create_new_application_password(
	$user_id,
	array( 'name' => 'سكربت النشر' )
);

if ( is_wp_error( $result ) ) {
	error_log( $result->get_error_message() );
} else {
	list( $password, $item ) = $result;
	// $password نص صريح. لا يمكن الحصول عليه إلا الآن، فسلّمه للمستخدم بطريقة آمنة
	error_log( 'created: ' . $item['uuid'] );
}

// جلب القائمة (name وuuid وcreated وlast_used وlast_ip وغيرها)
foreach ( WP_Application_Passwords::get_user_application_passwords( $user_id ) as $item ) {
	error_log( $item['name'] . ' ' . $item['uuid'] );
}

// حذف واحدة
// WP_Application_Passwords::delete_application_password( $user_id, $uuid );

الذي يُحفظ هو القيمة المشفَّرة (Hash) فقط، ولا يمكن استخراج كلمة المرور النصية إلا لحظة الإنشاء.

الاستخدام مع REST API

في curl أضف مصادقة Basic بـ -u اسم_المستخدم:كلمة_مرور_التطبيق. تحقق أولًا من أن بيانات المستخدم المصادَق عليه تُعاد.

# التحقق من نجاح المصادقة (تُعاد بيانات المستخدم نفسك عند النجاح)
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" https://example.com/wp-json/wp/v2/users/me

# إنشاء مقالة مسودة
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" \
  -X POST https://example.com/wp-json/wp/v2/posts \
  -H "Content-Type: application/json" \
  -d '{"title":"مقالة اختبار","content":"المحتوى","status":"draft"}'

إذا استدعيت REST API لموقع WordPress آخر من PHP فابنِ ترويسة Authorization بنفسك.

<?php
$response = wp_remote_get(
	'https://example.com/wp-json/wp/v2/users/me',
	array(
		'headers' => array(
			'Authorization' => 'Basic ' . base64_encode( 'admin:abcd EFGH 1234 ijkl MNOP 6789' ),
		),
	)
);

if ( ! is_wp_error( $response ) ) {
	error_log( wp_remote_retrieve_response_code( $response ) );
}

كلمة المرور في المثال نموذج فقط. ولا تكتب كلمة المرور الفعلية في الشيفرة مباشرة، بل ضعها في مكان غير معلن مثل متغيرات البيئة أو ملف إعدادات.

ما يُتحقق منه عند تعذّر المصادقة

العرَض ما تتحقق منه
لا يوجد قسم «كلمات مرور التطبيقات» في الملف الشخصي هل الموقع يعمل بـ HTTPS؟ وهل عُطّلت الميزة بفلتر أو إضافة؟
/wp/v2/users/me يعيد 401 هل اسم المستخدم صحيح (اسم تسجيل الدخول لا الاسم المعروض)؟ وهل أُلغيت كلمة المرور؟
تُعامَل كأنك غير مسجّل دخول رغم أن البيانات صحيحة قد لا يمرّر الخادم ترويسة Authorization إلى PHP. في Apache تحقق من بقاء السطر RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] في .htaccess الخاص بـ WordPress
تفشل بعض عناوين URL فقط هل تقيّد إضافة أمان أو WAF الوصول إلى REST API؟

أخطاء REST API عمومًا مشروحة في «إصلاح أخطاء REST API».

تعطيل كلمات مرور التطبيقات

في المواقع التي لا تستخدمها يمكن تعطيل الميزة كلها. اكتب ما يلي في functions.php للقالب أو في إضافة تكتبها بنفسك.

<?php
// التعطيل على مستوى الموقع كله
add_filter( 'wp_is_application_passwords_available', '__return_false' );

وإذا أردت السماح لمستخدمين معيّنين فقط فاستخدم الفلتر الخاص بالمستخدم. المثال التالي يسمح فقط للمستخدمين الذين يملكون صلاحية المدير (manage_options).

<?php
add_filter( 'wp_is_application_passwords_available_for_user', function ( $available, $user ) {
	return $available && user_can( $user, 'manage_options' );
}, 10, 2 );

أما تقييد الوصول إلى REST API نفسه فراجع «كيفية تقييد الوصول إلى REST API».

ملاحظات التشغيل

  • أنشئ لكل أداة كلمة مرور مستقلة، واجعل الاسم يدل على الغرض. فإذا تسرّبت ألغيتَ كلمة تلك الأداة وحدها.
  • ألغِ كلمات مرور الأدوات التي لم تعد تُستخدم فورًا. وما كان تاريخ آخر استخدام له قديمًا في القائمة فقد لا يكون مستخدمًا.
  • راجع هل تحتاج فعلًا إلى تسليم كلمة مرور المدير إلى خدمة خارجية، وأنشئها بمستخدم يملك الصلاحيات اللازمة فقط.

لديك أسئلة حول WordPress؟ ناشر هذا الموقع موجود في اليابان ويرد باللغة اليابانية. تواصل معنا (باليابانية)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲