Verwendung von WP_Query in einer eigenen datei.php in /wp-includes

  • Hallo zusammen,
    ich habe wieder einmal eine Newbie Frage.

    Ich habe eine /wp-includes/datei.php angelegt, in welcher ich WP_Query nutzen möchte. Die Datei wird per
    <form .... method=post> angesprochen.

    Nach mehreren Fehlermeldungen habe ich meine datei.php um folgende Includes erweitert:

    include ('option.php');
    include ('functions.php');
    include ('query.php');

    Nun bekomme ich die Fehlermeldung:
    Fatal error: require() [function.require]: Failed opening required 'ABSPATHWPINC/option.php' (include_path='.:/usr/share/php') in ..../wp/wp-includes/functions.php on line 8

    Einen dazu passenden Eintrag kann ich in der functions.php auch finden:
    require( ABSPATH . WPINC . '/option.php' );

    Jetzt frage ich mich, was muss ich noch alles einbinden, oder kann ich das Ganze nicht einfacher hinbekommen?
    Anmerkung: Ich bin nicht unbedingt auf das Verzeichnis /wp-includes/ angewiesen und könnte die Datei auch an anderer Stelle verankern.

    Danke schon einmal für Eure Hilfe.
    Gruß

    • 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

  • Die erste Frage ist: Was soll in der 'datei.php' passieren? Warum wird sie als Ergebnis einer Formularübertragung direkt angesprochen? Warum wird diese Datei in /wp-includes abgelegt (da gehören nur Core Dateien hin)?

    Bevor wir also eventuelle Includes klären, sollten wir einmal grundsätzlich über das Vorhaben und die Wordpress-konforme Umsetzung sprechen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Morgen Kurg

    Als erstes würde ich dir raten deine eigene php-Datei in das verwendete Childtheme zu verschieben. Denn dort wo du sie jetzt hast, wird sie bei jedem WP-Update entfernt. In einem Childtheme hingegen bleibt sie erhalten - sogar bei einem Update des eigentlichen Themes (daher auch das Childtheme).

    Und als nächstes musst du für eigene Dateien nur eine WP-Datei einbinden, und zwar die "wp-load.php". Diese Datei befindet sich im Stammverzeichnis deiner WP-Installation und wird normalerweise mittels "require_once" eingebunden. Vom Childtheme aus, sieht das ganze dann so auch:

    PHP
    <?php
    require_once('../../../wp-load.php');

    LG, pixselig

  • Vielen Dank für Eure Antworten.
    mensmaximus Weil ich es nicht besser wusste, und mit den Update-Vorgängen noch nicht vertraut bin.

    pixselig Danke, ich habe das mal abgeändert. In der datei.php sollen eigentlich nur ein paar Daten gelesen werden, formatiert und per wp_mail verschickt werden. Danach soll ein redirect erfolgen.

    Leider sehe ich jetzt aber nur noch eine weiße Seite, (habe hier schon gelesen, dass es das öfter gibt, kann aber so in meiner datei.php erst einmal keinen Fehler finden ;-( )

    Grüße


  • mensmaximus Weil ich es nicht besser wusste, und mit den Update-Vorgängen noch nicht vertraut bin.

    pixselig Danke, ich habe das mal abgeändert. In der datei.php sollen eigentlich nur ein paar Daten gelesen werden, formatiert und per wp_mail verschickt werden. Danach soll ein redirect erfolgen.

    Leider sehe ich jetzt aber nur noch eine weiße Seite, (habe hier schon gelesen, dass es das öfter gibt, kann aber so in meiner datei.php erst einmal keinen Fehler finden ;-( )

    Meine Meinung nach dieser Antwort: Das geht mächtig schief.

    Ungeachtet dessen hier ein paar Tipps:

    1. Eine solche "datei.php" gehört in ein Childtheme
    2. Daten lesen, formatieren und verarbeiten machst Du am besten über eine Funktion, die Du per Ajax abarbeitest
    3. Denke in jedem Fall daran Deine Custom Query nach erledigter Arbeit (Funktion) zurückzusetzen

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Also einen Syntaxfehler kann ich auch nicht finden.
    Allerdings geht bei mir die Logik nicht ganz auf, woher die switch-Anweisung die Variable "$op" nimmt. Und ohne dass diese den Wert "sendTicketMail" hat wird ja auch deine ganze Funktion inkl. Umleitungen nicht ausgeführt. Ergo, bekommst du nur eine weisse Seite.

  • Nene, das funktioniert schon, die Variable setze ich beim Aufbau des Formulars, in der action. Ob das richtig funktioniert und ich die Mehtode erreiche habe ich mit Debug-Outputs getestet. Das tut's.

  • ... die Variable setze ich beim Aufbau des Formulars, in der action...

    Das verstehe ich jetzt aber nicht wirklich.
    Irgendwie musst du doch "$op" an deine individuelle "datei.php" übergeben. Also per GET oder POST?
    Oder hast du sie global definiert (das täte aber keinen Sinn ergeben)?
    Oder stehe ich selber auf dem Schlauch?

    Wenn es nicht daran liegt, dann weiss ich leider auch nicht weiter.

    LG, pixselig

  • Leider sehe ich jetzt aber nur noch eine weiße Seite

    Meine Meinung nach dieser Antwort: Das geht mächtig schief.

    Nene, das funktioniert schon, die Variable setze ich beim Aufbau des Formulars, in der action.

    Das würde ich sehr gerne mal sehen. Ob da wohl ein wenig PUT und GET durcheinander gewürfelt wird?

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Hi, danke für die Hilfe.
    Ja, die gebe ich per POST mit, das hatte ich aber hinterher zerschossen, und dann gings nicht mehr. Dank deiner Frage, jetzt aber wieder.
    Die Mails werden jetzt auch raus geschickt und der redirect klappt auch.
    Zwei Kleinigkeiten an denen ich jetzt noch arbeiten muss: Ich habe aber noch nicht gesucht/gegoogelt, deshalb erwarte ich darauf keine Antwort:
    1.) Auf der ganzen Seite und auch in der Mail gehen mir die Umlaute verloren
    2.) Ich muss noch mal schauen, ob ich den eigentlichen Mail-Text in html aufbauen kann um dort eine hübsche Struktur zu haben.

    Danke noch mal

  • Das würde ich sehr gerne mal sehen. Ob da wohl ein wenig PUT und GET durcheinander gewürfelt wird?

    .... och mensch sei doch nicht so negativ.
    Natürlich mache ich Fehler, aber dafür, dass ich mich jetz erst seit ca. 2Wochen mit Wordpress beschäftige, finde ich bin ich schon ganz schön weit gekommen (... und mir reicht das auch ...).

    Liebe Grüße

  • also 2.) kann man erreichen, indem man direkt vor dem wp_mail - Aufruf folgendes macht:
    add_filter('wp_mail_content_type',create_function('', 'return "text/html"; '));

  • .... och mensch sei doch nicht so negativ.

    Ich bin total emotionslos bei solchen Dingen. Ich kenne Deinen Code nicht aber ich könnte mir vorstellen, dass Du auch keinen nounce setzt oder die Inhalte Deiner Variablen prüfst. Das Ende vom Lied ist immer wieder das gleiche, gehackte Seiten und falls das beim falschen Provider passiert werden es hunderte gehackter Seiten.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • ... dass Du auch keinen nounce ...

    Stimmt allerdings, ich verwende nonce's. Wobei man ja durchaus auf nounce als Synonym kommen könnte.
    Nichts für ungut, kleiner Spass muss sein. :smile:

    ach ja:
    1.) Stimmte auch nicht so ganz, Verwendung von &Uuml hat geholfen.

  • Stimmt allerdings, ich verwende nonce's.

    Dann habe ich mir umsonst Sorgen gemacht, was angesichts von Fremddateien in /wp-includes nicht ganz unbegründet war.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

Jetzt mitmachen!

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