J'ai une installation WordPress pour un blog personnel et je porte progressivement tous les petits morceaux Web que j'ai écrits au fil des ans sur des pages du blog.
Une de ces pages est http://www.projecttoomanycooks.co.uk/cgi-bin/memory/majorAnalysis.py qui est un simple script python qui renvoie une liste de mots - je voudrais intégrer ce comportement dans une page wordpress - quelqu'un pourrait-il m'orienter dans la bonne direction pour la manière facile de gérer un point de python dans wordpress?
EDIT - suite à la merveilleuse réponse ci-dessous, je suis beaucoup plus loin ... mais malheureusement toujours pas tout à fait là ...
J'ai python qui s'exécute sur le serveur ...
projecttoomanycooks server [~/public_html/joereddington/wp-content/plugins]#./hello.py
Hello World!
et il est dans le même répertoire que le plugin activé ...
Le code python ... qui a le code suivant ...
#!/usr/bin/python
print("Hello World!")
Le 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;
}
Réponses:
Vous pouvez utiliser
popen()
pour lire ou écrire dans un script Python (cela fonctionne aussi avec n'importe quel autre langage). Si vous avez besoin d'une interaction (passage de variables), utilisezproc_open()
.Un exemple simple pour imprimer Hello World! dans un plugin WordPress
Créez le plugin, enregistrez un shortcode:
Vous pouvez maintenant utiliser ce shortcode dans l'éditeur de publication avec
[python]
ou[python file="filename.py"]
.Mettez les scripts Python que vous souhaitez utiliser dans le même répertoire que le fichier du plugin. Vous pouvez également les placer dans un répertoire et ajuster le chemin dans le gestionnaire de shortcode.
Créez maintenant un script Python complexe comme celui-ci:
Et c'est tout. Utilisez le shortcode et obtenez cette sortie:
la source
J'ai suivi l'exemple de script de la première réponse, mais je n'obtenais aucune sortie ni erreur.
J'ai changé cette ligne:
pour ça:
puis a reçu un message "permission refusée".
Sur la console, j'ai couru
rafraîchi la page, et tout fonctionnait parfaitement.
C'est peut-être le problème que Joe voyait ci-dessus. Je n'ai pas assez de représentant pour faire un commentaire, désolé. J'espère que cela aide quelqu'un.
la source
chmod +x filename.py
va faireVoici un petit script qui utilise
proc_open
comme indiqué ci-dessus, pour envoyer une simple variable de texte à un script python:Ajout de quelques tests en bas pour voir si le fichier python l'est
rwx
. Je pense qu'une meilleure façon d'envoyer leargv
serait d'utiliser fwrite, mais cela ne fonctionnait pas pour moi après ce tutoriel .Voici le script python que j'ai utilisé. Comme indiqué dans les commentaires ci-dessus, quelque chose comme
#!/usr/bin/env python
peut être nécessaire, selon le serveur.la source