• Gelöst ponte32

    (@ponte32)


    Hallo zusammen,

    ich bin zwar schon ein wenig erfahren mit WordPress, aber kein Experte. Ich arbeite zumeist mit anderen CMS, aber mein Kunde möchte seine Seite unbedingt mit WordPress. Auf seiner bisherigen Seite habe ich ihm ein Tool erstellt, mit dem man nach Eingabe einer Postleitzahl den passenden Berater für die Region angezeigt bekommt. Das wurde von mir erstellt und ist kein Plugin oder ahnliches externes Tool. Die Umsetzung ist im Grunde auch recht simpel: über ein Formular rufe ich eine PHP-Datei auf in der es „wenn-dann“-Abfragen gibt und je nach dem, wo die angegebene PLZ liegt, wird auf die Seite des entsprechenden Beraters weitergeleitet. Ich habe jetzt das kleine Formular dazu in WordPress erstellt (manuell), die ganzen Berater-Seiten und ich habe die PHP-Datei. Nur der Aufruf der PHP-Datei funktioniert nicht, weil ich die Datei ziemlich sicher am falschen Platz habe (Root-Verzeichnis).

    Meine Frage ist jetzt: kann ich das, was ich so vorhabe, überhaupt so mit WP umsetzen? Wenn ja, wo müsste ich die PHP-Datei ablegen und wie greife ich über den Editor (hier Elementor) dann auf die Datei zu (Pfadangabe)?

    Was ich schon versucht habe:
    den PHP-Code via Elementor auf die Seite einzubinden. Ist aber keine gute Idee, weil das sind ca. 8.000 Zeilen Code. Elementor packt das nicht. Außerdem steht dann der komplette Code mit der Abfrage im Quellcode. Das möchte ich eigentlich nicht, auch wenn man die PHP-Datei, die ich aufrufe, über den Quellcode einsehen kann.

    Ich habe auch verschiedene Plugins ausprobiert, um den PHP-Code zu laden. Aber auch diese binden den Code gleich komplett sichtbar ein. Und über diesen Weg hat auch der Aufruf der Session-Variable nicht geklappt.

    Ich habe dann mal einen Weg versucht, die PHP-Datei via eigenes Plugin zu laden, aber so wie ich das auf den ersten Blick gesehen habe, geht das nur mit CSS- und JS-Dateien, ist das korrekt?

    Ich habe auch mal daran gedacht, aus dem aktuellen Theme ein Child-Theme zu erstellen und darin die PHP-Datei zu laden. Würde das funktionieren?

    Viele Grüße
    ponte

Ansicht von 15 Antworten – 1 bis 15 (von insgesamt 15)
  • Anonymous User 20597857

    (@anonymized-20597857)

    Vorab scheint das eher eine fortgeschrittene Sache und weniger ein Anwenderproblem, um die man sich hier hpts. kümmert.
    Sicherlich kennen die Experten hier bessere Adressen für solche Fragen.
    Möglich, dass jemand die Sache einfach schnell löst, fertig. Kam schon vor, ist aber nicht die Regel.

    Zur Sache selbst:
    Elementor kenne ich nicht, abgesehen davon sollten die Pfade aber zu finden sein und zwischen Formular, Verarbeitung und Rückgabe natürlich passen.

    8.000 Zeilen Code

    echt? Das Script mit der Abfrage der PLZ ist so groß?

    wenn man die PHP-Datei, die ich aufrufe, über den Quellcode einsehen kann

    So etwas sollte mit PHP eigentlich unmöglich sein.

    Plugins ausprobiert, … auch diese binden den Code gleich komplett sichtbar ein.

    Ach so, oje.
    Eigentlich sollte das aber auch mit PHP gehen. Da gabs doch mal https://de.wordpress.org/plugins/insert-php-code-snippet/ (oje, veraltet). Aber vllt. findet sich da was neueres?

    daran gedacht, aus dem aktuellen Theme ein Child-Theme zu erstellen

    Das sollte man immer machen, ein Child. Sobald man etwas über die Standards haben will, viel eigenes CSS oder eben die functions.php aufbohren will, dann ist ein Child wichtig.
    Ob es damit geht, weiß ich auch nicht.

    Moderator Michi91

    (@michi91)

    Die Lösung sind ein eigenes Plugin & Shortcodes. Alternativ nen IFrame 😀

    Hier ein Beispiel, dass ich mit ChatGPT erarbeitet habe, es dient ein Beispiel und ist ungetestet, aber prinzipiell der richtige Weg:

    Um ein WordPress-Plugin zu erstellen, das einen Shortcode mit einem Formular enthält und das Ergebnis anzeigt, wenn das Formular gesendet wird, kannst du die folgenden Schritte befolgen:

    1. Erstelle ein neues Verzeichnis für dein Plugin im wp-content/plugins/-Verzeichnis deiner WordPress-Installation. Nenne es beispielsweise multiply-numbers-plugin.
    2. Erstelle im Plugin-Verzeichnis eine Haupt-PHP-Datei für dein Plugin. Nenne sie multiply-numbers-plugin.php. Füge den folgenden Code hinzu, um dein Plugin zu definieren:
    <?php
    /*
    Plugin Name: Multiply Numbers Plugin
    Description: A simple plugin to multiply two numbers.
    Version: 1.0
    Author: Your Name
    */
    
    // Define the shortcode
    function multiply_numbers_shortcode() {
        ob_start(); // Start an output buffer
        if (isset($_POST['submit'])) {
            // Process the form
            $num1 = isset($_POST['num1']) ? intval($_POST['num1']) : 0;
            $num2 = isset($_POST['num2']) ? intval($_POST['num2']) : 0;
            $result = $num1 * $num2;
            echo "Result: $num1 x $num2 = $result";
        }
        ?>
        <form method="post" action="">
            <label for="num1">Number 1:</label>
            <input type="number" name="num1" id="num1" required>
            <br>
            <label for="num2">Number 2:</label>
            <input type="number" name="num2" id="num2" required>
            <br>
            <input type="submit" name="submit" value="Multiply">
        </form>
        <?php
        return ob_get_clean(); // Return the form and result
    }
    
    // Register the shortcode
    add_shortcode('multiply_numbers', 'multiply_numbers_shortcode');
    1. Aktiviere das Plugin über das WordPress-Administrations-Dashboard.
    2. Um den Shortcode in deinen Beiträgen oder Seiten zu verwenden, füge einfach den folgenden Shortcode in den Inhalt ein:

    [multiply_numbers]

    Damit wird das Formular mit zwei Eingabefeldern für Zahlen angezeigt, und wenn du das Formular abschickst, wird das Ergebnis berechnet und angezeigt.

    Moderator Michi91

    (@michi91)

    Noch ein weiteres Code-Schnipsel. Da du den Benutzer ja weiterleiten möchtest, musst du die „Berechnung“ schon vorher abfangen. In der „init“ Action.

    function multiply_numbers_init() {
        
        if (isset($_POST['submit'])) {
            $num1 = isset($_POST['num1']) ? intval($_POST['num1']) : 0;
            $num2 = isset($_POST['num2']) ? intval($_POST['num2']) : 0;
            $result = $num1 * $num2;
    
            if ($result == 22) {
                wp_redirect('https://example.org/22');
                exit;
            }
        }
    }
    
    add_action('init', 'multiply_numbers_init');
    Anonymous User 20597857

    (@anonymized-20597857)

    Ich kenne das schon, bin aber jedes Mal erstaunt, wie manche solche Sachen aus dem Ärmel schütteln! 😮

    Eigenes Plugin / Shortcode … fiel mir auch ein, klar. Doch erst nach dem Absenden.

    Thread-Starter ponte32

    (@ponte32)

    Erst mal vielen Dank für die schnellen Antworten und Rückmeldungen! Ich schaue mir das Schritt für Schritt an und melde mich wieder, wenn ich ein Ergebnis habe :).

    Aber vorneweg: ja, das sind über 8000 Zeilen Code, weil ich für jede PLZ eine Zeile verwende (wegen der Übersicht) und wir haben in Deutschland ca. 8500 Postleitzahlen.

    Viele Grüße
    ponte

    @ponte32

    Aber vorneweg: ja, das sind über 8000 Zeilen Code, weil ich für jede PLZ eine Zeile verwende

    Das hört sich nach einer extremen Fehlprogrammierung an. Hast du die Postleitzahlen nicht in der Datenbank?

    Thread-Starter ponte32

    (@ponte32)

    Das hört sich nach einer extremen Fehlprogrammierung an. Hast du die Postleitzahlen nicht in der Datenbank?

    Nun ja, es gibt viele Wege, die nach Rom führen. Auf der aktuellen Seite ist keine Datenbank im Einsatz und die Abfragen via PHP sind kein Hexenwerk. Und auf der aktuellen Seite funktioniert meine Umsetzung. Und es wäre halt einfach gewesen, wenn ich die Datei ohne weiteres in WordPress nutzen könnte.

    Auf der aktuellen Seite ist keine Datenbank im Einsatz

    Und wie soll dann WordPress funktionieren? 🙁

    Thread-Starter ponte32

    (@ponte32)

    Und wie soll dann WordPress funktionieren? 🙁

    Die neue Seite hat natürlich eine Datenbank. Ich habe von der alten Seite gesprochen. Da musste ich eben eine Lösung ohne Datenbank umsetzen.

    Du willst aber jetzt dein Script in WordPress integrieren, dann solltest du es auch auf eine Datenbank migrieren, Rund 8500 Zeilen nur um einen Wert zu finden ist, sorry, wenn ich das mal so sage, totaler Irrsinn.

    Anonymous User 20597857

    (@anonymized-20597857)

    Vllt. könnte man es mal abspecken, indem man es in PLZ Bereiche, Bezirke, … teilt. Oder ist ein Berater pro PLZ?

    Was wäre denn mit einem Tool, welches z.B. bei Eingabe der PLZ den Umkreis visualisiert und die Standorte der Berater zeigt, welche etwa im Umkreis von x KM zeigt?
    Ein „Umkreissuche“ also …
    Würde auch cool aussehen.

    Vllt. nach „Store Locator“, „GeoLocator“ oder so suchen?

    Thread-Starter ponte32

    (@ponte32)

    Rund 8500 Zeilen nur um einen Wert zu finden ist, sorry, wenn ich das mal so sage, totaler Irrsinn.

    Die Frage ist nicht, ob etwas Irrsinn ist oder nicht, sondern was schnell und lösungsorientiert ist und nicht viel Zeitaufwand bedeutet. Die Menge an Zeilen kommt eben durch die Menge an PLZ. Wenn man sich mal mit dem Thema PLZ auseinandersetzt, ist das gar nicht so einfach. Man kann keine Bereiche „von bis“ nehmen, weil das auch falsche PLZ abdeckt. Ich bekomme 1x im Jahr eine aktuelle Liste mit allen PLZ und dem Namen dahinter. Und bisher war es für mich eine Sache von Minuten, die Liste auf die Webseite zu übertragen. Warum soll etwas „Irrsinn“ sein, was schnell geht und korrekt funktioniert?

    An der Stelle noch mal Danke an alle für die Tipps! Ich bin aktuell an einer anderen Sache dran, die kurzfristig und dringender ist. Ich melde mich aber auf jeden Fall hier noch mal!

    Viele Grüße
    ponte

    @ponte32

    Ich bekomme 1x im Jahr eine aktuelle Liste mit allen PLZ und dem Namen dahinter. Und bisher war es für mich eine Sache von Minuten, die Liste auf die Webseite zu übertragen.

    Die Liste wäre genauso schnell in der Datenbank.

    Warum soll etwas „Irrsinn“ sein, was schnell geht und korrekt funktioniert?

    Ich habe vor einiger Zeit für einen Freund ein Formular erstellt, in dem ein Feld mit einer Postleitzahl exisiert. Sobald die Postleitzahl in dem Feld 5-stellig ist, wird mit einem 40 Zeilen PHP-Script der Name der Stadt eingetragen. Es gibt auch Postleitzahlen, die zu mehreren Orten führen. In dem Fall habe ich eine Auswahlliste angeboten.

    Wie gesagt, 40 Zeilen (inkl Leerzeilen und Kommentare)

    Aber scheinbar haben wir andere Ansprüche an unsere Scripte. Jeder wie er möchte 😉

    Thread-Starter ponte32

    (@ponte32)

    Es ist jetzt schon ein paar Tage her – das Projekt ruhte ein wenig. Ich wollte nur kurz mitteilen, dass die Lösung mit dem Plugin wunderbar funktioniert. An dieser Stelle allen nochmals ein Dankeschön für die Hilfe! Auch @bscu! Ich weiß, dass das gut gemeint ist. 🙂

    super – freut uns. Danke für die Rückmeldung und “Gelöst”-Markieren. 👍

Ansicht von 15 Antworten – 1 bis 15 (von insgesamt 15)
  • Das Thema „Frage zu einer Umsetzung: Aufruf einer PHP-Datei nach Formulareingabe“ ist für neue Antworten geschlossen.