في هذه التدوينة سأتطرق لموضع مهم جدا وهو كيفية إضافة عضو ووردبريس جديد برمجيا، أي دون الدخول إلى لوحة التحكم.
ربما تكون قد فقدت كلمة المرور، أو أن أحدهم قام باختراق موقعك والسيطرة عليه لكن لازال بإمكانك الدخول للموقع عبر ftp أو cPanel، أو أن أحد عملائك أعطاك بيانات الاستضافة لكن نسي إعطائك اسم المستخدم وكلمة مرور لوحة تحكم ووردبريس… المهم أنك تريد الدخول إلى لوحة تحكم ووردبريس لكن لا تستطيع، الحل الوحيد في هذه الحالة هو إضافة عضو جديد بدور مدير.
هناك طريقتين للقيام بهذا العمل، اﻷولى عن طريق الدخول لل phpMyAdmin وملأ البيانات يدويا في جدول wp_users، والثانية هي عن طريق الكود.
أنا أفضل الطريقة الثانية ﻷنها هي اﻷفضل واﻷسرع.
الوظيفة التي سنستعملها هنا هي ()wp_create_user
، هذه الوظيفة تقبل ثلاث معاملات (parameters) اﻷول هو اسم المستخدم (إجباري)، الثاني كلمة المرور (إجباري) والثالث البريد الإلكتروني (اختياري)، على هذا الشكل: wp_create_user( $username, $password, $email )
بكل بساطة الشفرة التي سنستخدمها ﻹنشاء حساب برتبة مدير برمجيا سيكون كالآتي:
/**
* Add a new WordPress user.
*
* @return void
*/
function sb_create_user() {
/**
* The user username
*/
$user = 'said';
/**
* The user password
*/
$pass = '123456';
/**
* The user email
*/
$email = '[email protected]';
if ( ! username_exists( $user ) && ! email_exists( $email ) ) { // Check if the user does not exist in the database.
$user_id = wp_create_user( $user, $pass, $email ); // Create the new user.
$user = new WP_User( $user_id ); // Get the information of the new user in the database.
$user->set_role( 'administrator' ); // Set the new user as administrator.
}
}
add_action( 'init', 'sb_create_user' );
الشفرة سهلة الفهم، في البداية قمنا بإنشاء المتغيرات $user
, $pass
, $email
التي تحتوي على بيانات الحساب الذي سنقوم بإنشائه، بعدها قمنا بالتحقق من عدم وجود حساب آخر بنفس اسم المستخدم أو نفس البريد الإلكتروني (السطر 26) تم قمنا بإنشاء الحساب باستعمال wp_create_user()
السطر 27) وتغيير رتبته إلى مدير بواسطة الكلاس WP_User والدالة التابعة له set_role() الذي يقبل معامل (parameter) واحد وهو اسم الرتبة، في هذه الحالة وضعنا له administrator.
اﻵن يمكنك الدخول لموقعك باستعمال اسم المستخدم وكلمة المرور اللذان قمت بتحديدهما في المتغيرين $user
و $pass
.
أتمنا أن تكون قد استفدت من هذه التدوينة، شكرا على الزيارة 🙂
محمد قال
موضوع مميز جدا بارك الله فيك , كنت قد طلبت منك سابقا ان تشرح لنا إنشاء قائمة بريدية و نظام تسجيل الدخول للمشتركين لو تتذكر من حوالي سنة تقريبا أرجو منك اخي الكريم أن تعلمنا مما علمك الله
سعيــــد البقـــــــــــــــالي قال
السلام عليكم أخي،
أنا شخصيا أستعمل إضافة Mailpoet لهذا الغرض و سبب عدم شرحي لها لحد الساعة هو ضيق الوقت ﻷنها إضافة كبيرة و شرحها في تدوينة واحدة غير ممكن …
محمد قال
نحن في انتظارك و ما لا يدرك كله لا يترك كله لو فقك تفتح لنا رؤوس اقلام او ترشدنا إلى شروحات باللغة العربية في أي مكان , لك رسالة على الخاص
أحمد الراجحي قال
البقالي.. شكرًا لك من الأعماق على هذه الجهود، أين لي أن أضع هذا الكود في موقعي؟
سعيد البقالي قال
العفو أخي،يمكنك وضعه في ملف
functions.php
بالتوفيق!
شركه نقل اثاث قال
والله انت شخص اكثر من رائع بارك الله فيك
Moaad قال
موضوع جميل جيدا و الطرح رائع شكرا لك اخي العزيز كنت أبحث عنه
سعيد البقالي قال
العفو أخي معاد، يسعدني ذلك 🙂
إبراهيم قال
أخي سعيد جربت الكود على مستوى السيرفر لوكال لأنني صادفت المشكل عند دخولي كآدمن وعند البحث عثرت على صفحتك هذه لكن الكود أعلاه لم يأتي بأي نتيجة تذكر . علما أنني وضعت إيميل جديد واليوزرنيم والباسورد ولم تنفع معي وهرعت إلى الطريقة التقليدية التي وصفتها في الأول هي التي نفعت معي هل تعتقد أن المسألة فيها إرسال للبريد أو أنها لاتعمل على السيرفر المحلي أو أن الكود ينقصه شيء ما أو شيء من هذا القبيل
إبراهيم قال
عفوا ظهرت النتيجة بنجاح أخيرا لكنها تتأخر كثيرا ولم تظهر معي إلا بعد مدة 5 دقائق تقريبا
يعني بعد محاولات دخول فاشلة بعدها وضعت التعليق أعلاه ودخلت بالطريقة التقليدية
وتعمدت الدخول إلى صفحة الأعضاء ولم أجد شيئا شكيت في الكود يكون فيه أي خطأ أو ماشابه
ثم بعد برهة ظهرت أخيرا
هذا ما وقع معي وشكرا جزيلا لك على طرحك للموضوع
سعيد البقالي قال
الوظيفة كما هو واضح يتم تنفيذها في الخذاف [code lang=”php” inline=”true”]init[/code]، ما يعني أنها تنفّذ مباشرة بعد اشتغال ووردبريس، هذا يعني أن عليك إعادة تحميل أي صفحة لكي يتم تنفيذ الكود …
سعيد البقالي قال
أظن أنها لم تنفع معك في المرة الأول لأنك وضعت نفس إسم مستخدم موجود مسبقا في قاعدة البيانات… إذا لاحظت في السطر 5 أنه يتم التحقق من إسم المستخدم والبريد الإلكتروني.
جرب وضع بريد الكتروني وإسم مستخدم جديدين وسيعمل.