PHP-String in Plugin-Datei ersetzen

  • Hallo zusammen,
    ich habe folgendes Problem, wo ich nicht weiterkomme:
    In einer Plugin-Datei soll der String

    PHP
    <?php echo esc_attr( $option['label'] ); ?>


    durch diesen String

    PHP
    <?php echo html_entity_decode( $option['label'] ); ?>


    ersetzt werden. Das Script kommt in die functions.php oder ein Snippet-Plugin rein.

    Dieses Muster habe ich gefunden

    PHP
    $path_to_file = 'path/to/the/file';
    $file_contents = file_get_contents($path_to_file);
    $file_contents = str_replace("\nH",",H",$file_contents);
    file_put_contents($path_to_file,$file_contents);


    und so angepasst:

    PHP
    $path_to_file = WP_PLUGIN_DIR . '/happyforms/core/templates/parts/frontend-checkbox.php';
    $file_contents = file_get_contents($path_to_file);
    $file_contents = str_replace("<?php echo esc_attr( $option['label'] ); ?>","<?php echo html_entity_decode( $option['label'] ); ?>",$file_contents);
    file_put_contents($path_to_file,$file_contents);

    Es kommt folgende Fehlermeldung:
    Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\LWS\laragon\www\HappyForms\wp-content\plugins\wp-h-snippets\wphs.php on line 34

    Jetzt komme ich nicht weiter und bitte um einen guten Tipp.
    Die Variable "$option['label']" ist vermutlich noch leer.
    Vielen Dank!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ungeachtet der Sinnhaftigkeit des ganzen Vorhabens:

    • Das $ Zeichen im Suchen-/Ersetzenstring muss bei der Nutzung von doppelten Anführungszeichen escaped werden.
    • Was steht in Zeile 34 der angegeben Datei?

    Super!!!
    Das war die Lösung. Ganz herzlichen Dank dafür. Ich habe mit Hochkommas und Klammern probiert, aber nichts hat funktioniert.

    Inhalt der Zeile 34:
    $file_contents = str_replace("<?php echo esc_attr( \$option['label'] ); ?>","<?php echo html_entity_decode( \$option['label'] ); ?>",$file_contents);
    (Die Backslashes sind schon drin; im Original fehlten sie natürlich)

    Zur "Sinnhaftigkeit":
    Hier ein Forenbeitrag zum Plugin "HappyForms":
    https://wordpress.org/support/topic/…/#post-14090448

    Um in einem Formular die Privacy Police mit Link einzustellen ist die im Forenbeitrag beschriebene Datei zu bearbeiten. Da ich diese Sache auch für andere, eher unkundige Admins beschreibe, wollte ich die Dateibearbeitung vermeiden. Deshalb ist alles in einem Script drin.
    Im Ergebnis sieht es dann so aus wie bei meinem Kontaktformular ganz unten (Zustimmung):
    https://web266.de/kontakt/

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!