質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

5563閲覧

WordPressでPythonを使う方法

Dakoit

総合スコア19

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/08 17:06

編集2020/01/08 22:59

前提・実現したいこと

WordPressでPythonを使いたいです。

発生している問題・エラーメッセージ

エラーもなく、何が実行されていないのかわかりません。

該当のソースコード

WordPress内でJSやPHPは少し書いたことがありますが、Pythonは初めてで、まったくわからない状況にあります。

調べた結果、例えば「py1.py」が実行したいPythonだったとしたら、下記をheader.phpに書けば実行できるというような情報を得たのですが、出力されるのは「読み込み失敗」です。

「py1.py」

python

1print('テキスト1') 2print('テキスト2')

「header.php」

php

1<body> 2 3<?php 4$py_url = get_template_directory_uri() . '/py/py1.py'; 5$command = 'export LANG=ja_JP.UTF-8;python ' . $py_url; 6if(!exec($command, $output)){ 7 echo '読み込み失敗'; 8}else{ 9 echo '成功'; 10 foreach($output as $o){ 11 echo $o . '<br>'; 12 } 13} 14?>

試したこと

ポイントとしてフルパスであることが重要との情報を得ました。ディレクトリを確認したところ下記で間違いなく、そのため上記$py_urlとしました。

wp-content ├ themes └ my-theme-name ├ header.php ├ py └ py1.py

しかしいくつか調べるとこのフルパス($command部分)の指定にいろいろなパターンがあるようで、それを真似て下記のように計3通りを試しましたが、すべて同じ結果で出力されるのは「読み込み失敗」です。

php

1$command = 'export LANG=ja_JP.UTF-8;python ' . $py_url; 2$command = 'python3 .' . $py_url; 3$command = 'python3.4 '. $py_url . '2>&1';

もし試すべきこと、明らかな間違いなどございましたらご指摘いただけましたら幸甚に存じます。
どうぞ宜しくお願い致します。

補足情報(FW/ツールのバージョンなど)

使用バージョンは最新の以下になります。
WordPress 5.0.3
PHP 7.3

###追記
python の部分を インストールパス/python のように記載すると、以下のように「成功」となりましたが、ファイルがないというエラーになります。

成功/usr/bin/python: can't open file 'http://example.com/wp-content/themes/my-theme-name/py/py1.py': [Errno 2] No such file or directory

尚、上のエラー文のURLにアクセスすると、きちんと下記の「py1.py」ファイルがダウンロードできるので、ファイルがないというエラーがなぜ出るのか…不明です。

python

1print('テキスト1') 2print('テキスト2')

以下が実行コードになります。修正は2行目です。

「header.php」

php

1<body> 2 3<?php 4$py_url = get_template_directory_uri() . '/py/py1.py'; 5$command = '/usr/bin/python '.$py_url.' 2>&1'; // ここを修正したところ上記エラーです 6if(!exec($command, $output)){ 7 echo '読み込み失敗'; 8}else{ 9 echo '成功'; 10 foreach($output as $o){ 11 echo $o . '<br>'; 12 } 13} 14?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2020/01/08 22:10

python コマンドの部分をフルパスで記載するとどうなりますか?
Dakoit

2020/01/08 22:12

申し訳ございません。「python コマンドの部分をフルパスで記載する」とはどのような意味でしょうか?何分はじめてなもので、さまざまなことに理解が及びません。
Dakoit

2020/01/08 22:13

if(!exec($command, $output)){}を if(!exec($py_url, $output)){}という意味でしょうか? であれば同じ結果で「読み込み失敗」となります。
CHERRY

2020/01/08 22:17

puthon の部分を インストールパス/python のように記載するとどうなるのでしょうか?. 例 /usr/bin/python
Dakoit

2020/01/08 22:35 編集

お手数おかけしてすみません。ありがとうございます。 ※※※※※※※※※※※※※※※※※※※※※※※※ ここに書いていた返信ですが コードが特殊文字に変換されてしまって見にくいため 質問欄の「追記」に掲載させて頂きました。 ※※※※※※※※※※※※※※※※※※※※※※※※
guest

回答1

0

ベストアンサー

get_template_directory_uri() は、名前の通り テーマディレクトリのURL を返します。

get_template_directory()
子テーマをお使いの場合は、get_stylesheet_directory() に変えてみてください。

投稿2020/01/08 22:35

編集2020/01/08 22:36
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Dakoit

2020/01/08 22:58 編集

おかげ様で解決致しました。どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問