php-Code bei Umschalten zwischen Text und visuell kaputt
-
Hallo,
als Neuling bei WP habe ich folgendes Problem:
WP installiert
plugin für php installiert und aktiviertAuf einer Übungsseite habe ich Text eingefügt und dann vom „visuellen“ Editor auf den Text-Editor gewechselt um php-code einzufügen.
Wenn ich die Seite speichere/aktualisiere und mir angucke, stimmt alles.
Wenn ich jedoch einmal zurück auf den „visuellen“ Editor gehe ist der php-code komplett „vergeigt“. Das Umschalten mache ich oben rechts mit den Reitern. Gibt es eine Möglichkeit den php-code zu schützen?
-
plugin für php installiert und aktiviert
Welches? Link zum Plugin?
Gruß, Torsten
Hallo Torsten,
ich habe folgende Plugins installiert:
Ich habe für mich in den Einstellungen -> mein Profil „Beim Schreiben den WYSIWYG-Editor nicht benutzen“ aktiviert. Das ist aber keine Lösung, weil es um eine Seite geht, die von jemand erstellt und betreut wird die nur den WYSIWYG-Editor nutzt (kann??). Und weil ich auf dieser Vereins-Seite unsere sich mehrfach jährlich ändernden Inhalte automatisch aktualisiert haben möchte habe ich den php-Teil für unseren „Reiter“ erstellt. Den sollte es nicht jedes mal umformatieren wenn die Dame auf der Seite arbeitet und neu speichert.
Gruß Christian
Ich habe mir die Plugins noch nicht im Einzelnen angeschaut, halte es aber mit Blick auf die Sicherheit der Website für eine recht riskante Sache, PHP-Code in Beiträge einzufügen. Das ist in WordPress extra nicht erwünscht und im Editor auch nicht vorgesehen.
Richtig wäre, den PHP-Code in einem eigenen Plugin in eine Funktion zu packen, die dann im Editor über einen Shortcode aufgerufen wird. Dann hat auch die Benutzerin keine Probleme, unter Umständen eine gewünschte Funktion zu beeinträchtigen.
Das Plugin würde in etwa so aussehen:
<?php /* Plugin Name: Meine PHP-Funktion Version: 0.1 Description: Stellt für meine PHP-Funktion einen Shortcode zur Verfügung. Author: Bego Mario Garde <pixolin@pixolin.de> Author URI: https://pixolin.de */ // Exit if accessed directly if ( ! defined( ‘ABSPATH’ ) ) exit; function meine_php_funktion(){ /* Hier fügst du deine eigene PHP-Funktion ein, * also zum Beispiel … */ return 'Hello Dolly!'; } // Fügt den Shortcode [meinphp] hinzu add_shortcode( $tag = "meinphp", $func = "meine_php_funktion" );
Das ganze packst du per FTP in das Verzeichnis
wp-content/plugins/mein-php
und aktivierst dann das neue Plugin im Menü Plugins. (Alternativ kannst du es auch in ein Verzeichnismein-php
stecken, komprimieren und über das Menü Plugins > Installieren > Hochladen installieren.)Jetzt kannst du deinen PHP-Seite in Seiten oder Beiträgen ausführen, in dem du im Fließtext an beliebiger Stelle [meinphp] eingibst.
Ich halte diese Lösung für wesentlich sauberer und für den Endanwender unkomplizierter. Sicherer ist sie allemal.
Das liest sich sehr gut – vielen Dank für die ausführliche Erklärung und Hilfe. Werde das sofort probieren und mitteilen wenn ein Ergebnis vorliegt.
Gruß Christian
unabhängig davon warnt phpexec ganz eindeutig vorm Umschalten zw Text und visuell, weil es in sich logisch ist, dass dann php zerstört wird. Alles andere wäre hoch unsicher für deine Site.
Ich habe deinen Code kopiert und beide Vorschläge probiert:
Code (als mein-php.php gespeichert) in wp-content/plugins/mein-php per FTP übertragen. Wird auch in den plugins angezeigt. Beim Aktivieren kommt die Meldung:
Das Plugin kann nicht aktiviert werden, da es einen fatalen Fehler erzeugt.
Wenn ich es mit der zip-Datei versuche klappt die Installation aber auch da beim Aktivieren die gleiche Fehlermeldung.
Muss ich noch etwas ein- oder umstellen? Ich habe die beiden plugins „insert PHP“ und „exec PHP“ deaktiviert.
Ups, das tut mir leid … Montag Morgen. Mir waren versehentlich typografische Anfürhungszeichen reingerutscht und die mag PHP natürlich nicht. Hier also nochmal die richtige Version:
<?php /* Plugin Name: Meine PHP-Funktion Version: 0.1 Description: Stellt für meine PHP-Funktion einen Shortcode zur Verfügung. Author: Bego Mario Garde <pixolin@pixolin.de> Author URI: https://pixolin.de */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) exit; function meine_php_funktion(){ /* Hier fügst du deine eigene PHP-Funktion ein, * also zum Beispiel … */ return 'Hello Dolly!'; } // Fügt den Shortcode [meinphp] hinzu add_shortcode( $tag = "meinphp", $func = "meine_php_funktion" );
Oh, ja da hätte ich auch drauf kommen können…
Es funktioniert prima. Nochmals vielen Dank!
Nun habe ich eine Frage zur Anwendung:
Ich habe eine Seite die zunächst mal etwas normalen Text enthält. Und in diesem Text soll das plugin platziert werden. Wenn ich also:
bla bla
blu blu
[meinphp]
blo bloerstelle wird die Seite angezeigt:
aber erst mal der php-Inhalt und darunter dann bla bla blu blu blo blo.Wie kann ich den plugin-Inhalt da platzieren wo ich es will?
Das liegt vermutlich daran, dass deine PHP-Funktion etwas mit
echo
ausgibt. Funktionen in Shortcodes sollten statt dessen aber nur Werte zurückgeben – alsoreturn
stattecho
.Ja das ist richtig, weil ich Daten aus einer XML mit einer Schleife auslese und diese Zeilenweise ausgebe. Wenn ich das mit return mache ist ja nach dem ersten ausgegebenen Eintrag ende.
Hm? 🙂
function meine_php_funktion(){ $title = 'Hello Dolly!'; $author = 'Louis Armstrong'; $out = ''; $out .= 'Das Lied '; $out .= $title; $out .= " ist von "; $out .= $author; return $out; }
Wenn du mit einer Schleife Daten ausliest, lassen sich die Daten mit
while
einer Variablen zuweisen. Wichtig ist, dass du nachher alles in einem Wert hast, den du mitreturn
zurückgibst.Es klappt 😉
War zwar einiges an Schreibarbeit weil man ja nicht immer liest was wirklich da steht. Aber ich bin dann doch recht schnell darauf gekommen dass Variablen und html-Code nicht in einem „Additiv“ stehen dürfen. Also schön wie genau vorgemacht immer schön Zeile für Zeile und dann klappt das wunderbar.
Nochmals vielen Dank für die schnelle und gute Hilfe!
- Das Thema „php-Code bei Umschalten zwischen Text und visuell kaputt“ ist für neue Antworten geschlossen.