بما أنك تريد دمج كود Python داخل ووردبريس دون استخدام إضافات، فسنحتاج إلى تشغيل Flask كخدمة مستقلة على السيرفر، ثم يتواصل ووردبريس معه عبر REST API. سأوضح لك أين تضع كود Python وكيف تجعله يعمل مع ووردبريس.
🔹 1. أين تضع كود Python؟
بما أن ووردبريس يعتمد على PHP، لا يمكن تشغيل كود Python داخله مباشرة. لذا، سنقوم بـ:
✅ إنشاء مجلد مستقل داخل السيرفر لتشغيل Flask.
✅ تشغيل Flask كخادم API بحيث يتواصل معه ووردبريس عبر طلبات HTTP.
✅ استخدام PHP أو JavaScript في ووردبريس لإرسال الطلبات إلى Flask.
📌 الخطوات العملية
1️⃣ إنشاء مجلد جديد داخل السيرفر (خارج مجلد ووردبريس).
2️⃣ وضع كود Flask داخل هذا المجلد.
3️⃣ تشغيل Flask كخدمة مستقلة.
4️⃣ استخدام PHP أو JavaScript في ووردبريس للتواصل مع Flask.
🔹 2. إنشاء مجلد Flask داخل السيرفر
افتح الطرفية (Terminal) وانتقل إلى مجلد السيرفر:
bash
cd /var/www/
mkdir flask_auth
cd flask_auth
ثم أنشئ ملف app.py داخل هذا المجلد:
bash
nano app.py
🔹 3. وضع كود Python داخل app.py
هذا الكود سيقوم بمعالجة تسجيل الدخول باستخدام قاعدة بيانات ووردبريس:
python
from flask import Flask, request, jsonify
import pymysql
import hashlib
app = Flask(__name__)
# الاتصال بقاعدة بيانات ووردبريس
db = pymysql.connect(host='localhost', user='root', password='', database='wordpress_db')
cursor = db.cursor()
# API لتسجيل الدخول
@app.route('/api/login', methods=['POST'])
def login():
data = request.get_json()
cursor.execute("SELECT user_pass FROM wp_users WHERE user_email=%s", (data['email'],))
user = cursor.fetchone()
if user:
hashed_password = hashlib.md5(data['password'].encode()).hexdigest()
if user[0] == hashed_password:
return jsonify({"status": "success", "message": "تم تسجيل الدخول!"}), 200
else:
return jsonify({"status": "error", "message": "كلمة المرور غير صحيحة"}), 401
else:
return jsonify({"status": "error", "message": "البريد الإلكتروني غير مسجل"}), 404
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
🔹 4. تشغيل Flask على السيرفر
بعد حفظ الملف، قم بتشغيل Flask:
bash
python3 app.py
الآن، خادم Flask يعمل على http://your-server-ip:5000/api/login
.
🔹 5. التواصل بين ووردبريس و Flask
الآن، نحتاج إلى إرسال طلب تسجيل الدخول من ووردبريس إلى Flask.
📌 كود PHP داخل ووردبريس لإرسال الطلب إلى Flask
ضع هذا الكود داخل ملف تسجيل الدخول في ووردبريس (wp-login.php
) أو داخل قالب مخصص:
php
function login_user($email, $password) {
$url = "http://your-server-ip:5000/api/login";
$data = array("email" => $email, "password" => $password);
$options = array(
"http" => array(
"header" => "Content-Type: application/json",
"method" => "POST",
"content" => json_encode($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return json_decode($result, true);
}
// استخدام الدالة في صفحة تسجيل الدخول
$email = $_POST["email"];
$password = $_POST["password"];
$response = login_user($email, $password);
echo $response["message"];
🔹 6. كيف يعمل هذا؟
✅ Flask يعمل كخادم مستقل داخل مجلد /var/www/flask_auth/
.
✅ ووردبريس يرسل طلب تسجيل الدخول إلى Flask عبر http://your-server-ip:5000/api/login
.
✅Flask يتحقق من صحة البيانات في قاعدة بيانات ووردبريس.
✅ يرسل ردًّا إلى ووردبريس يخبره إذا كان تسجيل الدخول ناجحًا أم لا.
✅ ووردبريس يعرض النتيجة للمستخدم.
🔹 كيف نجعل Flask يعمل مع ووردبريس؟
بما أن ووردبريس لا يدعم تشغيل Python داخله، سنقوم بـ:
✅ تشغيل Flask كخادم مستقل على نفس السيرفر.
✅ استخدام REST API بحيث يتواصل ووردبريس مع Flask عبر طلبات HTTP.
✅ استخدام PHP داخل ووردبريس لإرسال البيانات إلى Flask واستقبال الرد.
🔹 1. تشغيل Flask كخادم مستقل
بما أن ووردبريس يعمل داخل مجلد /var/www/html/
، يمكننا تشغيل Flask في مجلد منفصل مثل /var/www/flask_auth/
.
📌 إنشاء مجلد Flask داخل السيرفر
افتح الطرفية (Terminal) وانتقل إلى مجلد السيرفر:
bash
cd /var/www/
mkdir flask_auth
cd flask_auth
ثم أنشئ ملف app.py داخل هذا المجلد:
bash
nano app.py
🔹 2. وضع كود Flask داخل app.py
هذا الكود سيقوم بمعالجة تسجيل الدخول باستخدام قاعدة بيانات ووردبريس:
python
from flask import Flask, request, jsonify
import pymysql
import hashlib
app = Flask(__name__)
# الاتصال بقاعدة بيانات ووردبريس
db = pymysql.connect(host='localhost', user='root', password='', database='wordpress_db')
cursor = db.cursor()
# API لتسجيل الدخول
@app.route('/api/login', methods=['POST'])
def login():
data = request.get_json()
cursor.execute("SELECT user_pass FROM wp_users WHERE user_email=%s", (data['email'],))
user = cursor.fetchone()
if user:
hashed_password = hashlib.md5(data['password'].encode()).hexdigest()
if user[0] == hashed_password:
return jsonify({"status": "success", "message": "تم تسجيل الدخول!"}), 200
else:
return jsonify({"status": "error", "message": "كلمة المرور غير صحيحة"}), 401
else:
return jsonify({"status": "error", "message": "البريد الإلكتروني غير مسجل"}), 404
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
🔹 3. تشغيل Flask على السيرفر
بعد حفظ الملف، قم بتشغيل Flask:
bash
python3 app.py
الآن، خادم Flask يعمل على http://your-server-ip:5000/api/login
.
🔹 4. التواصل بين ووردبريس و Flask
الآن، نحتاج إلى إرسال طلب تسجيل الدخول من ووردبريس إلى Flask.
📌 كود PHP داخل ووردبريس لإرسال الطلب إلى Flask
ضع هذا الكود داخل ملف تسجيل الدخول في ووردبريس (wp-login.php
) أو داخل قالب مخصص:
php
function login_user($email, $password) {
$url = "http://your-server-ip:5000/api/login";
$data = array("email" => $email, "password" => $password);
$options = array(
"http" => array(
"header" => "Content-Type: application/json",
"method" => "POST",
"content" => json_encode($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return json_decode($result, true);
}
// استخدام الدالة في صفحة تسجيل الدخول
$email = $_POST["email"];
$password = $_POST["password"];
$response = login_user($email, $password);
echo $response["message"];
🔹 5. كيف يعمل هذا؟
✅ Flask يعمل كخادم مستقل داخل مجلد /var/www/flask_auth/
.
✅ ووردبريس يرسل طلب تسجيل الدخول إلى Flask عبر http://your-server-ip:5000/api/login
.
✅Flask يتحقق من صحة البيانات في قاعدة بيانات ووردبريس.
✅ يرسل ردًّا إلى ووردبريس يخبره إذا كان تسجيل الدخول ناجحًا أم لا.
✅ ووردبريس يعرض النتيجة للمستخدم.