So führen Sie Python-Skripte in WordPress aus

Veröffentlicht: 2023-08-03

Python erfreut sich aufgrund seiner Benutzerfreundlichkeit, leistungsstarken Bibliotheken und einfachen Syntax immer größerer Beliebtheit. Ich ertappe mich oft dabei, dass ich einzelne Funktionalitäten für WordPress mit Python prototypisiere, bevor ich sie in PHP konvertiere.

Aber warum nicht einfach Python auf WordPress ausführen, anstatt das zu tun? In diesem Beitrag besprechen wir die verschiedenen Methoden, mit denen Python-Code direkt auf einer WordPress-Website ausgeführt werden kann.

Führen Sie Python-Skripte auf WordPress aus

Wir können eine integrierte PHP-Funktion namens exec() verwenden, um externe Skripte auszuführen, auch aus Python. Damit es funktioniert, ist ein wenig Code in PHP und Python erforderlich, aber es ist recht einfach, wenn Sie erst einmal verstanden haben, wie alles zusammenpasst.

david-clode-ojlt2xbwuws-unsplash-1

Wir können entweder ein Plugin oder ein Code-Snippet erstellen. Es hängt davon ab, was Sie erstellen möchten, aber normalerweise erstelle ich ein Code-Snippet, das im Frontend der Website einfacher zu verwalten ist.

Stellen Sie zunächst sicher, dass Python global auf Ihrem Server installiert ist. Sie können es selbst tun, wenn Sie Root-Zugriff haben. Wenn nicht, müssen Sie Ihren Webhost bitten, es zu installieren. Auf Cloudways mussten wir beispielsweise Python für uns installieren.

PHP-Funktion

Wir erstellen den Code, um eine PHP-Funktion zu erstellen, die jedes Python-Skript in WordPress ausführt. Zur Vereinfachung der Verwendung zeige ich Ihnen zunächst ein Snippet, das mit einem Code-Snippet-Management-Plugin verwendet werden kann. Dann können wir einen Blick darauf werfen, ein benutzerdefiniertes Plugin zu erstellen, um dasselbe zu tun.

Mit dieser Funktion sind alle Python-Skripte in der Medienbibliothek verfügbar, und wir können das auszuführende Skript auswählen, indem wir die Element-ID der Medienbibliothek angeben. Beachten Sie, dass Sie wahrscheinlich das Hochladen des Python-Mime-Typs zulassen müssen. Ich habe dieses Plugin verwendet, um es zu aktivieren.

Das sieht etwas kompliziert aus, weil ich am Ende viel Fehlerbehandlung hinzugefügt habe. Aber im Kern besteht der Code lediglich darin, die Datei aus der Medienbibliothek zu finden, das Skript auszuführen und alles auszugeben, was es letztendlich zurückgibt.

Bitte beachten Sie, dass ich „python3“ verwendet habe, da dies auf meinem Computer installiert ist. Möglicherweise möchten Sie es in „Python“ ändern.

<?php function cwpai_run_python_script($media_id) { // Mediendateipfad auf dem Server abrufen $media_path = get_attached_file($media_id); // Überprüfen Sie, ob die Mediendatei vorhanden ist if ($media_path) { // Setzen Sie den Python-Befehl $python_command = 'python3 ' . escapeshellarg($media_path); // Führen Sie das Python-Skript aus und erfassen Sie die Ausgabe exec($python_command, $output, $return_status); if ($return_status === 0) { // Skript erfolgreich ausgeführt, Ausgabe zurückgeben return implode("\n", $output); } else { // Skriptausführung fehlgeschlagen, Fehler protokollieren und Fehlermeldung zurückgeben error_log('Fehler beim Ausführen des Python-Skripts. Befehl: ' . $python_command); return 'Fehler beim Ausführen des Python-Skripts.'; } } else { // Mediendatei nicht gefunden, Fehler protokollieren und Fehlermeldung zurückgeben error_log('Mediendatei für Medien-ID nicht gefunden ' . $media_id); return 'Mediendatei nicht gefunden.'; } } // Verwendungsbeispiel mit Medien-ID 6 $result = cwpai_run_python_script(6); // Das Ergebnis ausgeben oder den Fehler behandeln if (is_string($result)) { // Wenn das Ergebnis ein String ist, zeigt es eine Fehlermeldung an echo $result; } else { // Wenn das Ergebnis kein String ist, sollte es die Ausgabe des Python-Skripts sein // Ausgabe anzeigen oder bei Bedarf weitere Verarbeitung durchführen echo $result; }

Wenn wir ein Plugin erstellen, könnte die Struktur so aussehen:

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

cwpai_plugin.php sieht so aus:

<?php /* Plugin-Name: CWPAI My Python Plugin Beschreibung: Ein Plugin zum Ausführen von Python-Skripten für Mediendateien. Version: 1.0 Autor: Ihr Name */ // Der Plugin-Code wird hier angezeigt. function cwpai_run_python_script($file_name) { // Plugin-Verzeichnispfad abrufen $plugin_dir = Plugin_dir_path(__FILE__); // Den Python-Skriptpfad relativ zum Plugin-Verzeichnis festlegen $python_script_path = $plugin_dir . 'assets/py/' . $file_name; // Überprüfen Sie, ob die Python-Skriptdatei vorhanden ist if (file_exists($python_script_path)) { // Legen Sie den Python-Befehl fest $python_command = 'python3 ' . escapeshellarg($python_script_path); // Führen Sie das Python-Skript aus und erfassen Sie die Ausgabe exec($python_command, $output, $return_status); if ($return_status === 0) { // Skript erfolgreich ausgeführt, Ausgabe zurückgeben return implode("\n", $output); } else { // Skriptausführung fehlgeschlagen, Fehler protokollieren und Fehlermeldung zurückgeben error_log('Fehler beim Ausführen des Python-Skripts. Befehl: ' . $python_command); return 'Fehler beim Ausführen des Python-Skripts.'; } } else { // Python-Skriptdatei nicht gefunden, Fehler protokollieren und Fehlermeldung zurückgeben error_log('Python-Skriptdatei nicht gefunden: ' . $python_script_path); return 'Python-Skriptdatei nicht gefunden.'; } }

Für das Plugin ist es schneller, die Python-Skripte in ein bestimmtes Verzeichnis einzubinden (in diesem Beispiel Assets/py), sodass Sie sie über FTP hinzufügen und bearbeiten können. Daher ist es besser, wenn Sie viel Python in WordPress ausführen.

Um es zu verwenden, rufen Sie einfach die Funktion auf:

// Anwendungsbeispiel mit dem Dateinamen „example.py“ $result = cwpai_run_python_script('example.py'); // Das Ergebnis ausgeben oder den Fehler behandeln if (is_string($result)) { // Wenn das Ergebnis ein String ist, zeigt es eine Fehlermeldung an echo $result; } else { // Wenn das Ergebnis kein String ist, sollte es die Ausgabe des Python-Skripts sein // Ausgabe anzeigen oder bei Bedarf weitere Verarbeitung durchführen echo $result; }

Shortcode

In der „Produktion“ kann es auch hilfreich sein, einen WP-Shortcode zum Ausführen eines Python-Skripts zu erstellen. Wir können die gleiche allgemeine Funktion wie oben verwenden und sie in einen WordPress-Shortcode umwandeln:

function cwpai_run_python_script($atts) { // Shortcode-Attribute extrahieren $args = shortcode_atts(array('media_id' => '1'), $atts); // Mediendateipfad auf dem Server abrufen $media_path = get_attached_file($args['media_id']); // Überprüfen Sie, ob die Mediendatei vorhanden ist if ($media_path) { // Setzen Sie den Python-Befehl $python_command = 'python3 ' . escapeshellarg($media_path); // Führen Sie das Python-Skript aus und erfassen Sie die Ausgabe exec($python_command, $output, $return_status); if ($return_status === 0) { // Skript erfolgreich ausgeführt, Ausgabe zurückgeben return implode("\n", $output); } else { // Skriptausführung fehlgeschlagen, Fehler protokollieren und Fehlermeldung zurückgeben error_log('Fehler beim Ausführen des Python-Skripts. Befehl: ' . $python_command); return 'Fehler beim Ausführen des Python-Skripts.'; } } else { // Mediendatei nicht gefunden, Fehler protokollieren und Fehlermeldung zurückgeben error_log('Mediendatei für Medien-ID nicht gefunden ' . $args['media_id']); return 'Mediendatei nicht gefunden.'; } } add_shortcode('run_python_script', 'cwpai_run_python_script');

Jetzt können Sie den Shortcode [run_python_script media_] direkt in Ihren Beiträgen und Seiten verwenden. Ersetzen Sie „6“ durch die ID der Mediendatei, die Sie verwenden möchten.

Nutzen Sie einen gehosteten Dienst

Es gibt Dutzende gehosteter Dienste, die Ihnen den Zugriff auf Python über APIs ermöglichen. Dies kann für komplexere Projekte und Arbeitsabläufe hilfreich sein, insbesondere da Sie in PHP (mit CURL) auf die Ausgabe zugreifen können, als ob Sie Ihr eigenes benutzerdefiniertes Plugin erstellt hätten.

Zuerst müssen Sie eine API mit Python erstellen. Hier ist eine gute Ressource dafür. Im Wesentlichen verwenden Sie Flask, um eine Webanwendung zu erstellen, die API-Endpunkte verfügbar macht. Anschließend hosten Sie diese Webanwendung mit einem dieser Dienste und greifen mit PHP auf die verschiedenen API-Endpunkte zu.

Hier ist eine Beispiel-Python-App mit der API:

# api.py import random from flask import Flask, request, jsonify app = Flask(__name__) Things_list = [ „Apple“, „Banana“, „Carrot“, „Hund“, „Elephant“, „Flower“, „Guitar“ , „Haus“, „Iglu“, „Jacke“ ] @app.route('/api/data', models=['POST']) def process_data(): data = request.get_json() message = data.get ('message') random_thing = random.choice(things_list) Response_data = {'response': f'Empfangene Nachricht: {message}. Zufälliges Ding: {random_thing}'} return jsonify(response_data) if __name__ == '__main__': app.run(debug=True)

Und wie ich in PHP darauf zugreifen würde, damit ich diese Daten in WordPress verwenden kann (sei es das Ändern von Datenbankfeldern, das Hinzufügen eines neuen Benutzers usw.)

<?php // API-Endpunkt-URL $apiUrl = 'http://your-python-api-domain.com/api/data'; // An die Python-API zu sendende Daten $data = array( 'message' => 'Hello from PHP!' ); // Daten in JSON konvertieren $dataJson = json_encode($data); // cURL-Sitzung initialisieren $ch = curl_init(); // cURL-Optionen festlegen 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-Sitzung ausführen und die Antwort erfassen $response = curl_exec($ch);

Jetzt können Sie die $response-Daten mit allen WordPress-Funktionen verwenden. Dies ist ein einfaches Beispiel, aber gut, um zu zeigen, wie Sie dies tun würden.

Wenn Sie ein bisschen technisch versiert sind und etwas Günstiges wollen, würde ich vorschlagen, Ihre Python-App mit Digital Ocean bereitzustellen, was für einfache Dinge 2,50 $/Monat kostet.

Wenn Sie etwas Schnelles, Einfaches und Einfaches möchten, schauen Sie sich PythonAnywhere.com an, das bei 5 $/Monat beginnt.

Abgesehen von kleinen Szenarien ist diese Methode wahrscheinlich die beste Möglichkeit, Dinge zu erledigen.

Konvertieren Sie Python in PHP

Eine andere Möglichkeit wäre, einfach Python in PHP zu konvertieren und ein Plugin wie Code Snippets zu verwenden, um diese Funktion auszuführen.

Sie können es manuell in PHP konvertieren oder ein Tool wie ChatGPT oder CodeWP verwenden, um Python einzufügen und anzufordern, dass es in PHP neu geschrieben wird. Hier ist ein Beispiel mit CodeWP, einem KI-Tool, das speziell für WordPress-Ersteller entwickelt wurde:

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

Abschluss

Als WordPress-Entwickler, der mit KI arbeitet, muss ich oft schnell etwas mit Python nachbauen oder sogar komplette Funktionalitäten auf Produktionsebene in der Sprache erstellen.

Wenn Sie diese Methoden befolgen, können Sie Python schnell auf einer WordPress-Site ausführen und auf alle ausgegebenen Ausgaben zugreifen.