كيفية تشغيل نصوص Python في WordPress

نشرت: 2023-08-03

تستمر بايثون في الازدياد بسبب سهولة استخدامها ، ومكتباتها القوية ، وبناء الجملة البسيط. غالبًا ما أجد نفسي أقوم بعمل نماذج أولية للوظائف الفردية لـ WordPress باستخدام Python قبل تحويلها إلى PHP.

لكن بدلاً من القيام بذلك ، لماذا لا تقوم فقط بتشغيل Python على WordPress؟ في هذا المنشور ، سنناقش الطرق المختلفة التي يمكن استخدامها لتشغيل كود Python مباشرة على موقع WordPress.

قم بتشغيل برامج Python النصية على WordPress

يمكننا استخدام دالة PHP مدمجة تسمى exec() لتشغيل البرامج النصية الخارجية ، بما في ذلك من Python. سيتطلب هذا القليل من التعليمات البرمجية في كل من PHP و Python لبدء العمل ، لكن الأمر سهل للغاية بمجرد أن تفهم كيف يتناسب كل شيء معًا.

ديفيد كلود ojlt2xbwuws-unplash-1

يمكننا إما إنشاء مكون إضافي أو مقتطف رمز. يعتمد ذلك على ما تتطلع إلى إنشائه ، لكنني عادةً ما أقوم بإنشاء مقتطف رمز يسهل إدارته على الواجهة الأمامية لموقع الويب.

أولاً ، تأكد من تثبيت Python عالميًا على خادمك. يمكنك القيام بذلك بنفسك إذا كان لديك حق الوصول إلى الجذر ، وإذا لم يكن كذلك ، فستحتاج إلى مطالبة مضيف الويب الخاص بك بتثبيته. على سبيل المثال ، في Cloudways ، كنا بحاجة إلى تثبيت Python لنا.

وظيفة PHP

سننشئ الكود لإنشاء وظيفة PHP تقوم بتشغيل أي نص برمجي Python في WordPress. لسهولة الاستخدام ، سأعرض لك أولاً مقتطفًا يمكن استخدامه مع المكون الإضافي Code Snippet Management. ثم يمكننا إلقاء نظرة على إنشاء مكون إضافي مخصص للقيام بنفس الشيء.

باستخدام هذه الوظيفة ، تعيش جميع نصوص Python النصية في مكتبة الوسائط ، ويمكننا تحديد البرنامج النصي للتشغيل عن طريق تحديد معرف عنصر مكتبة الوسائط. ضع في اعتبارك أنك ستحتاج على الأرجح إلى السماح بتحميل نوع Python mime. لقد استخدمت هذا البرنامج المساعد لتمكينه.

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

يرجى ملاحظة أنني استخدمت "python3" لأنه ما تم تثبيته على جهازي. قد ترغب في تغييرها إلى "بيثون".

<؟ php function cwpai_run_python_script ($ media_id) {// احصل على مسار ملف الوسائط على الخادم $ media_path = get_attached_file ($ media_id)؛ // تحقق مما إذا كان ملف الوسائط موجودًا إذا ($ media_path) {// عيِّن أمر Python $ python_command = 'python3'. escapeshellarg ($ media_path) ؛ // قم بتشغيل نص Python والتقاط إخراج exec ($ python_command ، $ output ، $ return_status) ؛ إذا ($ return_status === 0) {// تم تنفيذ البرنامج النصي بنجاح ، فقم بإرجاع الناتج الناتج من الداخل ("\ n"، $ output)؛ } else {// فشل تنفيذ البرنامج النصي ، سجل الخطأ وأعد رسالة الخطأ error_log ('خطأ في تنفيذ Python script. الأمر:'. $ python_command) ؛ إرجاع "خطأ في تنفيذ نص Python النصي." ؛ }} else {// Media file not found ، سجل الخطأ وأعد رسالة الخطأ error_log ('ملف الوسائط غير موجود لمعرف الوسائط'. $ media_id) ؛ إرجاع "ملف الوسائط غير موجود." ؛ }} // مثال للاستخدام مع معرف الوسائط 6 $ result = cwpai_run_python_script (6)؛ // إخراج النتيجة أو معالجة الخطأ إذا (is_string ($ result)) {// إذا كانت النتيجة سلسلة ، فإنها تشير إلى رسالة خطأ echo $ result؛ } else {// إذا لم تكن النتيجة سلسلة ، فيجب أن تكون ناتج نص Python // عرض الإخراج أو إجراء مزيد من المعالجة إذا لزم الأمر echo $ result؛ }

إذا أنشأنا مكونًا إضافيًا ، فقد يبدو الهيكل كما يلي:

 wp-content/plugins/ cwpai_my-python-plugin/ cwpai_plugin.php assets/ py/ script.py

يبدو cwpai_plugin.php كما يلي:

<؟ php / * اسم المكون الإضافي: CWPAI My Python Plugin الوصف: مكون إضافي لتنفيذ برامج Python النصية لملفات الوسائط. الإصدار: 1.0 المؤلف: اسمك * / // سيظهر رمز البرنامج المساعد هنا. function cwpai_run_python_script ($ file_name) {// احصل على مسار دليل البرنامج المساعد $ plugin_dir = plugin_dir_path (__ FILE__)؛ // قم بتعيين مسار برنامج Python النصي بالنسبة إلى دليل البرنامج المساعد $ python_script_path = $ plugin_dir. "الأصول / الحمية /". $ file_name؛ // تحقق مما إذا كان ملف برنامج Python النصي موجودًا إذا كان (file_exists ($ python_script_path)) {// تعيين أمر Python $ python_command = 'python3'. escapeshellarg ($ python_script_path) ؛ // قم بتشغيل نص Python والتقاط إخراج exec ($ python_command ، $ output ، $ return_status) ؛ إذا ($ return_status === 0) {// تم تنفيذ البرنامج النصي بنجاح ، فقم بإرجاع الناتج الناتج من الداخل ("\ n"، $ output)؛ } else {// فشل تنفيذ البرنامج النصي ، سجل الخطأ وأعد رسالة الخطأ error_log ('خطأ في تنفيذ Python script. الأمر:'. $ python_command) ؛ إرجاع "خطأ في تنفيذ نص Python النصي." ؛ }} else {// ملف Python النصي غير موجود ، سجل الخطأ وأعد رسالة الخطأ error_log ('ملف Python script not found:'. $ python_script_path)؛ إرجاع 'ملف بايثون النصي غير موجود.' ؛ }}

بالنسبة للمكوِّن الإضافي ، من الأسرع تضمين نصوص Python في دليل معين (في هذا المثال ، هي أصول / py) ، مما يسمح لك بإضافتها وتحريرها عبر FTP. لذلك ، من الأفضل أن يكون لديك الكثير من Python لتشغيلها في WordPress.

لاستخدامها ، ما عليك سوى استدعاء الوظيفة:

// مثال على الاستخدام باسم الملف "example.py" $ result = cwpai_run_python_script ('example.py') ؛ // إخراج النتيجة أو معالجة الخطأ إذا (is_string ($ result)) {// إذا كانت النتيجة سلسلة ، فإنها تشير إلى رسالة خطأ echo $ result؛ } else {// إذا لم تكن النتيجة سلسلة ، فيجب أن تكون ناتج نص Python // عرض الإخراج أو إجراء مزيد من المعالجة إذا لزم الأمر echo $ result؛ }

رمز قصير

في "الإنتاج" ، قد يكون من المفيد أيضًا إنشاء كود قصير لـ WP لتشغيل برنامج نصي بلغة Python. يمكننا استخدام نفس الوظيفة العامة من الأعلى ، مع التعديل لتحويلها إلى رمز قصير في WordPress:

الوظيفة cwpai_run_python_script ($ atts) {// استخراج سمات الرمز المختصر $ args = shortcode_atts (array ('media_id' => '1')، $ atts)؛ // احصل على مسار ملف الوسائط على الخادم $ media_path = get_attached_file ($ args ['media_id']) ؛ // تحقق مما إذا كان ملف الوسائط موجودًا إذا ($ media_path) {// عيِّن أمر Python $ python_command = 'python3'. escapeshellarg ($ media_path) ؛ // قم بتشغيل نص Python والتقاط إخراج exec ($ python_command ، $ output ، $ return_status) ؛ إذا ($ return_status === 0) {// تم تنفيذ البرنامج النصي بنجاح ، فقم بإرجاع الناتج الناتج من الداخل ("\ n"، $ output)؛ } else {// فشل تنفيذ البرنامج النصي ، سجل الخطأ وأعد رسالة الخطأ error_log ('خطأ في تنفيذ Python script. الأمر:'. $ python_command) ؛ إرجاع "خطأ في تنفيذ نص Python النصي." ؛ }} else {// ملف الوسائط غير موجود ، سجل الخطأ وأعد رسالة الخطأ error_log ('ملف الوسائط غير موجود لمعرف الوسائط'. $ args ['media_id']) ؛ إرجاع "ملف الوسائط غير موجود." ؛ }} add_shortcode ('run_python_script'، 'cwpai_run_python_script') ؛

يمكنك الآن استخدام الرمز المختصر [run_python_script media_] مباشرة في منشوراتك وصفحاتك. استبدل الرقم "6" بمعرف ملف الوسائط الذي تريد استخدامه.

استخدم خدمة مستضافة

هناك العشرات من الخدمات المستضافة التي تتيح لك الوصول إلى Python عبر واجهات برمجة التطبيقات. قد يكون هذا مفيدًا للمشاريع ومهام سير العمل الأكثر تعقيدًا ، لا سيما أنه يمكنك الوصول إلى المخرجات في PHP (باستخدام CURL) تمامًا كما لو أنشأت المكون الإضافي المخصص الخاص بك.

أولاً ، ستحتاج إلى إنشاء API باستخدام Python. هنا مصدر جيد لذلك. ستستخدم Flask بشكل أساسي لإنشاء تطبيق ويب يعرض نقاط نهاية API. بعد ذلك ، ستستضيف تطبيق الويب هذا بإحدى هذه الخدمات وستصل إلى نقاط نهاية API المختلفة باستخدام PHP.

إليك مثال على تطبيق Python الذي يحتوي على واجهة برمجة التطبيقات:

# api.py استيراد عشوائي من flask import Flask ، request ، jsonify app = Flask (__ name__) things_list = ["Apple"، "Banana"، "Carrot"، "Dog"، "Elephant"، "Flower"، "Guitar" ، "House"، "Igloo"، "Jacket"] @ app.route ('/ api / data'، methods = ['POST']) def process_data (): data = request.get_json () message = data.get ('message') random_thing = random.choice (things_list) response_data = {'response': f'Received message: {message}. الشيء العشوائي: {random_thing} '} إرجاع jsonify (response_data) إذا __name__ ==' __main__ ': app.run (debug = True)

وكيف يمكنني الوصول إليها في PHP ، مما يسمح لي باستخدام تلك البيانات في WordPress (سواء كان ذلك بتغيير حقول قاعدة البيانات ، أو إضافة مستخدم جديد ، إلخ ...)

<؟ php // عنوان URL لنقطة نهاية API $ apiUrl = 'http://your-python-api-domain.com/api/data'؛ // البيانات المراد إرسالها إلى Python API $ data = array ('message' => 'Hello from PHP!') ؛ // تحويل البيانات إلى JSON $ dataJson = json_encode ($ data) ؛ // تهيئة جلسة cURL $ ch = curl_init () ؛ // تعيين خيارات cURL curl_setopt ($ ch ، CURLOPT_URL ، $ apiUrl) ؛ curl_setopt ($ ch، CURLOPT_POST، 1) ؛ curl_setopt ($ ch، CURLOPT_POSTFIELDS، $ dataJson) ؛ curl_setopt ($ ch، CURLOPT_HTTPHEADER، array ('Content-Type: application / json')) ؛ curl_setopt ($ ch، CURLOPT_RETURNTRANSFER، true) ؛ // تنفيذ جلسة cURL والتقاط الاستجابة $ response = curl_exec ($ ch)؛

الآن ، مع بيانات الاستجابة $ ، يمكنك استخدامها مع أي من وظائف WordPress. هذا مثال أساسي ، لكن من الجيد توضيح كيفية القيام بذلك.

إذا كنت تقنيًا بعض الشيء وتريد شيئًا رخيصًا ، أقترح نشر تطبيق Python الخاص بك باستخدام Digital Ocean الذي يكلف 2.50 دولارًا شهريًا للأشياء البسيطة.

إذا كنت تريد شيئًا سريعًا وبسيطًا وسهلاً ، فراجع PythonAnywhere.com الذي يبدأ بسعر 5 دولارات شهريًا.

بخلاف السيناريوهات الصغيرة ، ربما تكون هذه الطريقة هي أفضل طريقة للقيام بالأشياء.

قم بتحويل Python إلى PHP

هناك خيار آخر يتمثل في تحويل Python إلى PHP واستخدام مكون إضافي مثل Code Snippets لتشغيل هذه الوظيفة.

يمكنك تحويلها يدويًا إلى PHP ، أو استخدام أداة مثل ChatGPT أو CodeWP للصقها في Python ، وطلب إعادة كتابتها إلى PHP. إليك مثال على CodeWP ، أداة AI مصممة خصيصًا لمنشئي WordPress:

الصفحة -2023-07-24-at-12-45-16

خاتمة

لكوني مطور WordPress يعمل مع الذكاء الاصطناعي ، غالبًا ما أجد نفسي بحاجة إلى الاستهزاء سريعًا بشيء ما باستخدام Python ، أو حتى إنشاء وظائف كاملة على مستوى الإنتاج في اللغة.

باتباع هذه الطرق ، يمكنك تشغيل python بسرعة على موقع WordPress والوصول إلى أي ناتج قد ينتج عنه.