Cara Menjalankan Skrip Python di WordPress

Diterbitkan: 2023-08-03

Python semakin populer karena kemudahan penggunaannya, perpustakaan yang kuat, dan sintaksis sederhana. Saya sering menemukan diri saya membuat prototipe fungsionalitas individu untuk WordPress dengan Python sebelum mengubahnya menjadi PHP.

Tapi daripada melakukan itu, mengapa tidak menjalankan Python di WordPress saja? Pada postingan kali ini, kita akan membahas berbagai metode yang bisa digunakan untuk menjalankan kode Python langsung di website WordPress.

Jalankan Skrip Python Di WordPress

Kita dapat menggunakan fungsi PHP bawaan yang disebut exec() untuk menjalankan skrip eksternal, termasuk dari Python. Ini akan membutuhkan sedikit kode di PHP dan Python untuk bekerja, tetapi cukup mudah setelah Anda memahami bagaimana semuanya cocok satu sama lain.

david-clode-ojlt2xbwuws-unsplash-1

Kami dapat membuat plugin, atau potongan kode. Itu tergantung pada apa yang ingin Anda buat, tetapi saya biasanya membuat cuplikan kode yang lebih mudah dikelola di bagian depan situs web.

Pertama, pastikan Python terinstal secara global di server Anda. Anda dapat melakukannya sendiri jika Anda memiliki akses root, jika tidak, Anda harus meminta host web Anda untuk menginstalnya. Misalnya, di Cloudways, kami perlu meminta mereka menginstal Python untuk kami.

Fungsi PHP

Kami akan membuat kode untuk membuat fungsi PHP yang akan menjalankan skrip Python apa pun di WordPress. Untuk kemudahan penggunaan, pertama-tama saya akan menunjukkan cuplikan yang dapat digunakan dengan plugin Code Snippet Management. Kemudian kita dapat melihat cara membuat plugin khusus untuk melakukan hal yang sama.

Dengan fungsi ini, semua skrip Python tinggal di perpustakaan media, dan kita dapat memilih skrip untuk dijalankan dengan menentukan ID item perpustakaan media. Perlu diingat, Anda mungkin perlu mengizinkan jenis mime Python untuk diunggah. Saya menggunakan plugin ini untuk mengaktifkannya.

Ini terlihat agak rumit karena saya akhirnya menambahkan banyak penanganan kesalahan. Tetapi pada intinya, semua kode yang dilakukan adalah menemukan file dari perpustakaan media, dan menjalankan skrip, mengeluarkan apa pun yang akhirnya dikembalikan.

Harap perhatikan bahwa saya telah menggunakan 'python3' karena itulah yang terinstal di komputer saya. Anda mungkin ingin mengubahnya menjadi 'python'.

<?php function cwpai_run_python_script($media_id) { // Dapatkan jalur file media di server $media_path = get_attached_file($media_id); // Periksa apakah file media ada if ($media_path) { // Tetapkan perintah Python $python_command = 'python3 ' . escapeshellarg($media_path); // Jalankan skrip Python dan tangkap keluarannya exec($python_command, $output, $return_status); if ($return_status === 0) { // Skrip berhasil dieksekusi, kembalikan output return implode("\n", $output); } else { // Eksekusi skrip gagal, catat kesalahan dan kembalikan pesan kesalahan error_log('Error mengeksekusi skrip Python. Perintah: ' .$python_command); return 'Kesalahan mengeksekusi skrip Python.'; } } else { // File media tidak ditemukan, catat kesalahan dan kembalikan pesan kesalahan error_log('File media tidak ditemukan untuk ID media ' . $media_id); return 'File media tidak ditemukan.'; } } // Contoh penggunaan dengan media ID 6 $result = cwpai_run_python_script(6); // Keluarkan hasilnya atau tangani kesalahan if (is_string($result)) { // Jika hasilnya berupa string, ini menunjukkan pesan kesalahan echo $result; } else { // Jika hasilnya bukan string, itu harus berupa output dari skrip Python // Menampilkan output atau melakukan pemrosesan lebih lanjut jika diperlukan echo $result; }

Jika kita membuat plugin, strukturnya akan terlihat seperti ini:

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

cwpai_plugin.php terlihat seperti ini:

<?php /* Nama Plugin: CWPAI Deskripsi Plugin Python Saya: Plugin untuk mengeksekusi skrip Python untuk file media. Versi: 1.0 Penulis: Nama Anda */ // Kode plugin akan ditempatkan di sini. function cwpai_run_python_script($file_name) { // Dapatkan jalur direktori plugin $plugin_dir = plugin_dir_path(__FILE__); // Setel jalur skrip Python relatif ke direktori plugin $python_script_path = $plugin_dir . 'aset/py/' . $nama_berkas; // Periksa apakah file skrip Python ada if (file_exists($python_script_path)) { // Tetapkan perintah Python $python_command = 'python3 ' . escapeshellarg($python_script_path); // Jalankan skrip Python dan tangkap keluarannya exec($python_command, $output, $return_status); if ($return_status === 0) { // Skrip berhasil dieksekusi, kembalikan output return implode("\n", $output); } else { // Eksekusi skrip gagal, catat kesalahan dan kembalikan pesan kesalahan error_log('Error mengeksekusi skrip Python. Perintah: ' .$python_command); return 'Kesalahan mengeksekusi skrip Python.'; } } else { // File skrip Python tidak ditemukan, catat kesalahannya dan kembalikan pesan kesalahan error_log('File skrip Python tidak ditemukan: ' . $python_script_path); kembalikan 'File skrip Python tidak ditemukan.'; } }

Untuk plugin, akan lebih cepat untuk menyertakan Skrip Python di direktori tertentu (dalam contoh ini, aset/py), memungkinkan Anda untuk menambahkan dan mengeditnya melalui FTP. Oleh karena itu, lebih baik jika Anda memiliki banyak Python untuk dijalankan di WordPress.

Untuk menggunakannya, cukup panggil fungsi:

// Contoh penggunaan dengan nama file "example.py" $result = cwpai_run_python_script('example.py'); // Keluarkan hasilnya atau tangani kesalahan if (is_string($result)) { // Jika hasilnya berupa string, ini menunjukkan pesan kesalahan echo $result; } else { // Jika hasilnya bukan string, itu harus berupa output dari skrip Python // Menampilkan output atau melakukan pemrosesan lebih lanjut jika diperlukan echo $result; }

Kode pendek

Dalam "produksi" membuat kode pendek WP untuk menjalankan skrip Python juga dapat membantu. Kita dapat menggunakan fungsi umum yang sama dari atas, memodifikasi untuk membuatnya menjadi shortcode WordPress:

function cwpai_run_python_script($atts) { // Ekstrak atribut shortcode $args = shortcode_atts(array('media_id' => '1'), $atts); // Dapatkan jalur file media di server $media_path = get_attached_file($args['media_id']); // Periksa apakah file media ada if ($media_path) { // Tetapkan perintah Python $python_command = 'python3 ' . escapeshellarg($media_path); // Jalankan skrip Python dan tangkap keluarannya exec($python_command, $output, $return_status); if ($return_status === 0) { // Skrip berhasil dieksekusi, kembalikan output return implode("\n", $output); } else { // Eksekusi skrip gagal, catat kesalahan dan kembalikan pesan kesalahan error_log('Error mengeksekusi skrip Python. Perintah: ' .$python_command); return 'Kesalahan mengeksekusi skrip Python.'; } } else { // File media tidak ditemukan, catat kesalahan dan kembalikan pesan kesalahan error_log('File media tidak ditemukan untuk ID media ' . $args['media_id']); return 'File media tidak ditemukan.'; } } add_shortcode('run_python_script', 'cwpai_run_python_script');

Sekarang Anda dapat menggunakan kode pendek [run_python_script media_] langsung di postingan dan halaman Anda. Ganti "6" dengan ID file media yang ingin Anda gunakan.

Gunakan Layanan yang Dihosting

Ada lusinan layanan yang dihosting di luar sana yang memungkinkan Anda mengakses Python melalui API. Ini mungkin berguna untuk proyek dan alur kerja yang lebih kompleks, terutama karena Anda dapat mengakses keluaran dalam PHP (menggunakan CURL) sama seperti jika Anda membuat plugin khusus Anda sendiri.

Pertama, Anda harus membuat API dengan Python. Inilah sumber yang bagus untuk itu. Anda pada dasarnya akan menggunakan Flask untuk membuat aplikasi web yang menampilkan titik akhir API. Kemudian, Anda akan menghosting webapp tersebut dengan salah satu layanan ini dan mengakses titik akhir API yang berbeda dengan PHP.

Berikut ini contoh Aplikasi Python yang memiliki API:

# api.py import random from flask import Flask, request, jsonify app = Flask(__name__) things_list = [ "Apel", "Pisang", "Wortel", "Anjing", "Gajah", "Bunga", "Gitar" , "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'Pesan yang diterima: {message}. Hal acak: {random_thing}'} kembalikan jsonify(response_data) jika __name__ == '__main__': app.run(debug=True)

Dan bagaimana saya mengaksesnya di PHP, memungkinkan saya menggunakan data itu di WordPress (baik itu mengubah bidang basis data, menambahkan pengguna baru, dll...)

<?php // URL titik akhir API $apiUrl = 'http://domain-python-api-anda.com/api/data'; // Data untuk dikirim ke API Python $data = array( 'message' => 'Hello from PHP!' ); // Ubah data menjadi JSON $dataJson = json_encode($data); // Inisialisasi sesi cURL $ch = curl_init(); // Setel opsi 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); // Jalankan sesi cURL dan tangkap responsnya $response = curl_exec($ch);

Sekarang, dengan data $response, Anda dapat menggunakannya dengan fungsi WordPress apa pun. Ini adalah contoh dasar, tetapi bagus untuk menunjukkan bagaimana Anda melakukannya.

Jika Anda agak teknis dan menginginkan sesuatu yang murah, saya sarankan untuk menerapkan aplikasi Python Anda menggunakan Digital Ocean dengan biaya $2,50/bln untuk hal-hal sederhana.

Jika Anda menginginkan sesuatu yang cepat, sederhana, dan mudah, lihat PythonAnywhere.com yang dimulai dari $5/bln.

Selain skenario kecil, metode ini mungkin merupakan cara terbaik untuk melakukan sesuatu.

Ubah Python Menjadi PHP

Pilihan lain adalah dengan mengubah Python menjadi PHP dan menggunakan plugin seperti Cuplikan Kode untuk menjalankan fungsi itu.

Anda dapat mengonversinya secara manual ke PHP, atau menggunakan alat seperti ChatGPT atau CodeWP untuk menempelkannya di Python, dan memintanya untuk ditulis ulang menjadi PHP. Berikut ini contoh dengan CodeWP, alat AI yang dibuat khusus untuk pembuat WordPress:

lepage-2023-07-24-at-12-45-16

Kesimpulan

Menjadi pengembang WordPress yang bekerja dengan AI, saya sering menemukan diri saya perlu dengan cepat meniru sesuatu dengan Python, atau bahkan membuat fungsionalitas tingkat produksi yang lengkap dalam bahasa tersebut.

Dengan mengikuti metode ini, Anda dapat dengan cepat menjalankan python di situs WordPress dan mengakses output apa pun yang dihasilkannya.