问题描述
我有一个 WordPress 安装个人博客,我正在逐渐移植所有的小网站,我多年来写的博客上的页面。
一个这样的页面是 http://www.projecttoomanycooks.co.uk/cgi-bin/memory/majorAnalysis.py,它是一个简单的 python 脚本,返回一个单词列表 – 我想在 wordpress 页面中嵌入这个行为 – 有人可以指出我正确的方向,以便轻松地运行一个 python 的位置 WordPress 的?
编辑 – 遵循下面的美妙答案,我有更多的东西… 但不幸的是仍然不太在那里
我有在服务器上执行的 python …
projecttoomanycooks server [~/public_html/joereddington/wp-content/plugins]#./hello.py
Hello World!
它与激活的插件在同一个目录中…
python 代码… 有以下代码…
#!/usr/bin/python
print("Hello World!")
php:
<?php
/**
* Plugin Name: Joe's python thing.
* Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
* Description: A brief description of the Plugin.
* Version: The Plugin's Version Number, e.g.: 1.0
* Author: Name Of The Plugin Author
* Author URI: http://URI_Of_The_Plugin_Author
* License: A "Slug" license name e.g. GPL2
*/
/*from http://wordpress.stackexchange.com/questions/120259/running-a-python-scri
pt-within-wordpress/120261?noredirect=1#120261 */
add_shortcode( 'python', 'embed_python' );
function embed_python( $attributes )
{
$data = shortcode_atts(
array(
'file' => 'hello.py'
),
$attributes
);
$handle = popen( __DIR__ . '/' . $data['file'], 'r');
$read = fread($handle, 2096);
pclose($handle);
return $read;
}
最佳解决方案
您可以使用 popen()
读取或写入 Python 脚本 (这与任何其他语言一起使用) 。如果需要交互 (传递变量),请使用 proc_open()
。
一个简单的例子打印 Hello World!在 WordPress 插件
创建插件,注册一个短码:
<?php # -*- coding: utf-8 -*-
/* Plugin Name: Python embedded */
add_shortcode( 'python', 'embed_python' );
function embed_python( $attributes )
{
$data = shortcode_atts(
[
'file' => 'hello.py'
],
$attributes
);
$handle = popen( __DIR__ . '/' . $data['file'], 'r' );
$read = '';
while ( ! feof( $handle ) )
{
$read .= fread( $handle, 2096 );
}
pclose( $handle );
return $read;
}
现在,您可以使用 [python]
或 [python file="filename.py"]
的帖子编辑器中使用该短码。
将要使用的 Python 脚本放在与插件文件相同的目录中。您也可以将它们放入目录并调整短码处理程序中的路径。
现在创建一个复杂的 Python 脚本,如下所示:
print("Hello World!")
就这样。使用短码,并得到这个输出:
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。