WordPress で Python スクリプトを実行する方法

公開: 2023-08-03

Python は、その使いやすさ、強力なライブラリ、シンプルな構文により人気が高まり続けています。 私は、WordPress の個々の機能を PHP に変換する前に Python でプロトタイピングすることがよくあります。

しかし、そんなことをする代わりに、WordPress 上で Python を実行してはどうでしょうか? この投稿では、WordPress Web サイト上で Python コードを直接実行するために使用できるさまざまな方法について説明します。

WordPress で Python スクリプトを実行する

exec()という組み込みの PHP 関数を使用して、Python からのスクリプトを含む外部スクリプトを実行できます。 これを機能させるには、PHP と Python の両方で少しのコードが必要ですが、すべてがどのように組み合わされるかを理解すれば、非常に簡単です。

デビッド-clode-ojlt2xbwuws-unsplash-1

プラグインまたはコード スニペットを作成できます。 何を構築したいかによって異なりますが、私は通常、Web サイトのフロントエンドで管理しやすいコード スニペットを作成します。

まず、Python がサーバーにグローバルにインストールされていることを確認します。 root アクセス権がある場合は自分で行うことができますが、ない場合はウェブホストにインストールを依頼する必要があります。 たとえば、Cloudways では、Python をインストールしてもらう必要がありました。

PHP関数

WordPress で Python スクリプトを実行する PHP 関数を作成するコードを作成します。 使いやすくするために、最初にコード スニペット管理プラグインで使用できるスニペットを示します。 次に、同じことを行うカスタム プラグインの構築を見てみましょう。

この関数を使用すると、すべての Python スクリプトがメディア ライブラリに存在し、メディア ライブラリのアイテム ID を指定することで実行するスクリプトを選択できます。 おそらく、Python MIME タイプのアップロードを許可する必要があることに注意してください。 それを有効にするためにこのプラグインを使用しました。

最終的に多くのエラー処理を追加したため、これは少し複雑に見えます。 しかし、本質的には、コードが行うことは、メディア ライブラリからファイルを検索し、スクリプトを実行して、最終的に返されるものを出力することだけです。

私のマシンにインストールされている「python3」を使用していることに注意してください。 「Python」に変更するとよいでしょう。

<?php function cwpai_run_python_script($media_id) { // サーバー上のメディア ファイルのパスを取得 $media_path = get_attached_file($media_id); // メディア ファイルが存在するかどうかを確認します if ($media_path) { // Python コマンド $python_command = 'python3 ' を設定します。 エスケープシェルラーグ($media_path); // Python スクリプトを実行し、出力をキャプチャします exec($python_command, $output, $return_status); if ($return_status === 0) { // スクリプトが正常に実行され、出力が返されます return implode("\n", $output); } else { // スクリプトの実行が失敗し、エラーをログに記録し、エラー メッセージを返します。 error_log('Python スクリプトの実行中にエラーが発生しました。コマンド: ' . $python_command); return 'Python スクリプトの実行中にエラーが発生しました。'; } } else { // メディア ファイルが見つかりません。エラーをログに記録し、エラー メッセージを返します。 error_log('メディア ID のメディア ファイルが見つかりません ' . $media_id); 「メディア ファイルが見つかりません。」を返します。 } } // メディアID 6の使用例 $result = cwpai_run_python_script(6); // 結果を出力するか、エラーを処理します if (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 プラグインの説明: メディア ファイルの Python スクリプトを実行するプラグイン。 バージョン: 1.0 作成者: あなたの名前 */ // プラグイン コードがここに挿入されます。 function cwpai_run_python_script($file_name) { // プラグインのディレクトリ パスを取得 $plugin_dir = plugin_dir_path(__FILE__); // Python スクリプトのパスをプラグイン ディレクトリに相対的に設定します $python_script_path = $plugin_dir 。 'assets/py/' 。 $ファイル名; // Python スクリプト ファイルが存在するかどうかを確認します if (file_exists($python_script_path)) { // Python コマンド $python_command = 'python3 ' を設定します。 エスケープシェルラーグ($python_script_path); // Python スクリプトを実行し、出力をキャプチャします exec($python_command, $output, $return_status); if ($return_status === 0) { // スクリプトが正常に実行され、出力が返されます return implode("\n", $output); } else { // スクリプトの実行が失敗し、エラーをログに記録し、エラー メッセージを返します。 error_log('Python スクリプトの実行中にエラーが発生しました。コマンド: ' . $python_command); return 'Python スクリプトの実行中にエラーが発生しました。'; } } else { // Python スクリプト ファイルが見つかりません。エラーをログに記録し、エラー メッセージを返します。 error_log('Python スクリプト ファイルが見つかりません: ' . $python_script_path); return 'Python スクリプト ファイルが見つかりません。'; } }

プラグインの場合、Python スクリプトを特定のディレクトリ (この例では、assets/py) に含める方が簡単で、FTP 経由で追加および編集できるようになります。 したがって、WordPress で実行する Python がたくさんあるほうが良いでしょう。

これを使用するには、関数を呼び出すだけです。

// ファイル名「example.py」の使用例 $result = cwpai_run_python_script('example.py'); // 結果を出力するか、エラーを処理します if (is_string($result)) { // 結果が文字列の場合、エラー メッセージを示します echo $result; } else { // 結果が文字列でない場合、それは Python スクリプトの出力である必要があります。 // 出力を表示するか、必要に応じてさらなる処理を実行します echo $result; }

ショートコード

「運用」では、Python スクリプトを実行するための WP ショートコードを作成することも役立つ場合があります。 上記と同じ一般的な関数を使用して、 を変更して WordPress ショートコードにすることができます。

function cwpai_run_python_script($atts) { // ショートコード属性を抽出 $args = shortcode_atts(array('media_id' => '1'), $atts); // サーバー上のメディア ファイルのパスを取得 $media_path = get_attached_file($args['media_id']); // メディア ファイルが存在するかどうかを確認します if ($media_path) { // Python コマンド $python_command = 'python3 ' を設定します。 エスケープシェルラーグ($media_path); // Python スクリプトを実行し、出力をキャプチャします exec($python_command, $output, $return_status); if ($return_status === 0) { // スクリプトが正常に実行され、出力が返されます return implode("\n", $output); } else { // スクリプトの実行が失敗し、エラーをログに記録し、エラー メッセージを返します。 error_log('Python スクリプトの実行中にエラーが発生しました。コマンド: ' . $python_command); return 'Python スクリプトの実行中にエラーが発生しました。'; } } else { // メディア ファイルが見つかりません。エラーをログに記録し、エラー メッセージを返します。 error_log('メディア ID のメディア ファイルが見つかりません ' . $args['media_id']); 「メディア ファイルが見つかりません。」を返します。 add_shortcode('run_python_script', 'cwpai_run_python_script');

投稿やページでショートコード[run_python_script media_]を直接使用できるようになりました。 「6」を使用するメディア ファイルの ID に置き換えます。

ホスト型サービスを使用する

API 経由で Python にアクセスできるホスト型サービスが多数存在します。 これは、特に独自のカスタム プラグインを作成したかのように PHP で (CURL を使用して) 出力にアクセスできるため、より複雑なプロジェクトやワークフローに役立つ場合があります。

まず、Python で API を作成する必要があります。 ここにそのための優れたリソースがあります。 基本的には Flask を使用して、API エンドポイントを公開する Web アプリを作成します。 次に、これらのサービスのいずれかを使用してその Web アプリをホストし、PHP を使用してさまざまな API エンドポイントにアクセスします。

API を備えた Python アプリの例を次に示します。

# api.py フラスコからランダムにインポート import Flask, request, jsonify app = Flask(__name__) things_list = [ "リンゴ"、"バナナ"、"ニンジン"、"犬"、"象"、"花"、"ギター" 、「家」、「イグルー」、「ジャケット」] @app.route('/api/data',methods=['POST']) def process_data(): data = request.get_json() message = data.get ('メッセージ')random_thing =random.choice(things_list)response_data = {'response': f'受信したメッセージ: {message}。 ランダムなもの: {random_thing}'} return jsonify(response_data) if __name__ == '__main__': app.run(debug=True)

そして、PHP でそれにアクセスし、そのデータを WordPress で使用できるようにする方法 (データベースフィールドの変更、新しいユーザーの追加など)。

<?php // API エンドポイント URL $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);

$response データを使用すると、WordPress のあらゆる機能で使用できるようになります。 これは基本的な例ですが、これを行う方法を示すのに適しています。

少し技術的で、安価なものが必要な場合は、Digital Ocean を使用して Python アプリをデプロイすることをお勧めします。簡単な場合は月額 2.50 ドルかかります。

素早く、シンプルで簡単なものが必要な場合は、月額 $5 から始まる PythonAnywhere.com をチェックしてください。

小規模なシナリオ以外では、この方法がおそらく最善の方法です。

Python を PHP に変換する

もう 1 つのオプションは、単純に Python を PHP に変換し、コード スニペットなどのプラグインを使用してその関数を実行することです。

手動で PHP に変換することも、ChatGPT や CodeWP などのツールを使用して Python に貼り付け、PHP への書き換えをリクエストすることもできます。 以下は、WordPress クリエイター向けに特別に構築された AI ツールである CodeWP の例です。

ルパージュ-2023-07-24-at-12-45-16

結論

AI を扱う WordPress 開発者である私は、Python で何かを手早くモックアップしたり、言語で完全な運用レベルの機能を作成したりする必要があることによく気づきます。

これらの方法に従うことで、WordPress サイトで Python をすばやく実行し、生成されるあらゆる出力にアクセスできます。