Oh. Interessant. [php] ist ein Shortcode, um PHP in Blogbeiträgen auszuführen? Damit könnte man ja bequem einige Sicherheitskonzepte von WordPress umgehen. Ich bin mir jetzt nicht sicher, ob Du das wirklich willst.
Abgesehen davon könnest Du doch in der functions.php einen Shortcode definieren mit
add_shortcode( 'testplugin', 'my_shortcode_testplugin');
function my_shortcode_testplugin() {
$a = shortcode_atts( array(
'var1' => '1',
'multiselected' => true,
'height' => '300',
'autowidth' => true,
'rowNum' => '25',
), $atts );
$out = "var 1 = {$a['var1']}<br>;
$out .= "Multiselected = {$a['multiselected']}<br>";
$out .= "height = …
…
return $out;
}
// im Beitragseditor
[testplugin var1="10" mutliselected=false etc …]
Hallo,
ich denke ich muss da etwas Klarheit hineinbringen.
Da es bei WordPress standardmässig keine Möglichkeit gibt PHP zu exekutieren gibt es eine Vielzahl von PlugIns die dieses ermöglichen. U.a. das Plugin „ezphp“ mit dem man mit shortcode [php] und [/php] php code ausführen kann.
Wozu brauche ich das ??
Ich muss Seiten erzeugen auf denen Grids mit Daten aus der Datenbank angezeigt werden (mitunter komplexe Master-Detail). Dazu verwende ich PHP Grid Control (JQgrid) ( http://www.phpgrid.org ). Der Hersteller bietet aber nur ein sehr rudimentäres Plugin für WordPress an (phpgrid).
Mein Ziel ist es nun ein Plugin zu erstellen, das dynamisch ein Array von Daten bekommt (so funktioniert PHP Grid Control) aus dem dann zur Laufzeit ein Datengrid erstellt wird.
Die Funktion „do_shortcode“ ist ja eine Worpress eigene und in der möchte ich lediglich ein Array von Daten übergeben und in der Plugin Funktion weiterbearbeiten.
habe die Funktion schon dahigehend geändert (aber ohne Erfolg):
<?php
$arr["multiselect"] = true;
$arr["height"] = "250";
$arr["autowidth"] = true;
$arr["rowNum"] = 15;
echo do_shortcode( '[testplugin var1="10" var2="'.$arr.'" ]' );
?>
Lg
Gerhard
Hast Du dich mal gefragt, warum es bei WordPress „standardmässig keine Möglichkeit gibt PHP zu exekutieren“?
do_shortcode() im Beitragseditor zu verwenden klingt für mich einfach falsch. Eine Alternative habe ich Dir genannt, auch wenn Du nicht darauf eingehst.