• Gelöst ChristianFrankreich

    (@christianfrankreich)


    Hallo,

    als Neuling bei WP habe ich folgendes Problem:

    WP installiert
    plugin für php installiert und aktiviert

    Auf 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?

Ansicht von 12 Antworten – 1 bis 12 (von insgesamt 12)
  • Moderator Torsten Landsiedel

    (@zodiac1978)

    plugin für php installiert und aktiviert

    Welches? Link zum Plugin?

    Gruß, Torsten

    Thread-Starter ChristianFrankreich

    (@christianfrankreich)

    Hallo Torsten,

    ich habe folgende Plugins installiert:

    insert PHP

    Exec PHP

    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

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    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 Verzeichnis mein-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.

    Thread-Starter ChristianFrankreich

    (@christianfrankreich)

    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

    Monika

    (@monika)

    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.

    Thread-Starter ChristianFrankreich

    (@christianfrankreich)

    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.

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    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"
    );
    Thread-Starter ChristianFrankreich

    (@christianfrankreich)

    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 blo

    erstelle 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?

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Das liegt vermutlich daran, dass deine PHP-Funktion etwas mit echo ausgibt. Funktionen in Shortcodes sollten statt dessen aber nur Werte zurückgeben – also return statt echo.

    Thread-Starter ChristianFrankreich

    (@christianfrankreich)

    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.

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    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 mit return zurückgibst.

    Thread-Starter ChristianFrankreich

    (@christianfrankreich)

    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!

Ansicht von 12 Antworten – 1 bis 12 (von insgesamt 12)
  • Das Thema „php-Code bei Umschalten zwischen Text und visuell kaputt“ ist für neue Antworten geschlossen.