Support » Allgemeine Fragen » Problem mit Pfadangabe

  • Hallo,
    ich habe WordPress lokal auf meinem Rechner installiert und zwar unter
    D:\xampp\htdocs\wordpress\
    In D:\xampp\htdocs\wordpress\wp-content\themes\
    habe ich das child: twentyfifteen-child definiert mit functions.php und style.css.
    Dazu habe ich in diesem Verzeichnis meine Funktion „nachricht.php“ definiert.
    Auf der Webseite habe ich angegeben
    <form action=“../nachricht.php“ method=“post“
    ………
    Damit wird die Funktion nicht gefunden.
    Erst durch die Angabe
    ../wp-content/themes/twentyfifteen-child//nachricht.php
    ergibt sich das gewünschte Ergebnis.
    Allerdings möchte ich in dem Pfad möglichst nicht den child-Name haben.
    Gibt es eine elegantere Pfadangabe?

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 23)
  • Da eigene Inhalte abhängig von Einstellungen in der wp-config.php auch in einem anderen Verzeichnis als wp-content liegen könnten, würde der relative Pfad unter Umständen auch einen Fehler liefern.

    Besser ist es, die Funktionen zu verwenden, die WordPress dir zur Verfügung stellt.

    <form action="<?php echo get_stylesheet_directory() . '/nachricht.php'; ?>" method="post">

    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von Bego Mario Garde. Grund: Code korrigiert
    Thread-Starter lothar01

    (@lothar01)

    Hallo,
    ich habe Deinen Vorschlag original (Cut&Paste) übernommen. Aber er findet damit die Datei nicht.

    Liegt die Datei denn im Child-Theme-Verzeichnis?
    Oder in einem Unterverzeichnis?

    Nachtrag: ich hab gerade gesehen, dass noch ein Fehler in der Zeile war. Statt <? sollte es <?php heißen (oben bereits korrigiert).

    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von Bego Mario Garde. Grund: Nachtrag
    Thread-Starter lothar01

    (@lothar01)

    Die Datei liegt im Child-Theme-Verzeichnis.
    Hier der Gesamtpfad:
    D:\xampp\htdocs\wordpress\wp-content\themes\twentyfifteen-child\

    und die Dateien:
    D:\xampp\htdocs\wordpress\wp-content\themes\twentyfifteen-child\functions.php
    D:\xampp\htdocs\wordpress\wp-content\themes\twentyfifteen-child\nachricht.php
    D:\xampp\htdocs\wordpress\wp-content\themes\twentyfifteen-child\style.css

    In dem Source-Code der Seite sieht es übrigens so aus:
    <form action=“<? echo get_stylesheet_directory() . ‚/nachricht.php‘; ?>“ method=“post“>

    Das erste “ wird also original dargestellt, die folgenden codiert. Vermutlich liegt es daran?
    Egal wie ich es hier darstellen will, die Codierung wird wieder in “ zurückverwandelt.
    Also nochmals: Im Sourcecode werden die “ bis auf das erste dargestellt mit
    & # 8220 (ohne die Leerstellen).

    Original:
    <form action="<? echo get_stylesheet_directory() . '/nachricht.php'; ?>" method="post">

    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von lothar01.
    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von lothar01.
    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von lothar01.
    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von lothar01.
    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von lothar01.
    • Diese Antwort wurde geändert vor 6 Jahren, 3 Monaten von lothar01.

    Änder mal das <? in <?php – sorry wegen dem Fehler.

    Thread-Starter lothar01

    (@lothar01)

    Hallo, leider immer noch kein Erfolg.
    Das auf der Seite sichbare HTML ist
    <form action=“<?php echo get_stylesheet_directory() . ‚/nachricht.php‘; ?>& #8220; method=& #8220;post& #8220;><br />

    (keine Leerstellen nach den &

    Thread-Starter lothar01

    (@lothar01)

    Ich habe es jetzt testweise so versucht:
    <form action="<?php echo '../wp-content/themes/Divi_child_WR/nachricht.php'; ?>" method="post">

    also mit echo Ausgabe deskorrekten Pfads. Auch hier im Ergebnis die codierten „.

    Schau mal, ob dir da „typographische Anführungszeichen“ reingerutscht sind.
    Was für einen Programmier-Editor verwendest du? Achte da auch auf die richtige Zeichenkodierung (UTF-8 ohne BOM).

    Thread-Starter lothar01

    (@lothar01)

    Ich verwende Notepad++,
    Die Codierung ist UTF-8 ohne BOM.
    In diesem Editor habe ich die Anführungzeichen erneut eingegeben,
    Aber es führte nicht zu einem Erfolg.
    Die Angabe
    <form action=“<?php ?>“ method=“post“>
    ergibt
    <form action=“<?php ?>& #8220; method=& #8220;post&# 8220;>
    Die Angabe
    <form action=“blabla“ method=“post“>
    ergibt
    <form action=“blabla“ method=“post“>

    D.h. <?php …?> wird nicht verstanden

    Das ergibt für mich keinen Sinn, da kann ich dir nicht weiterhelfen.

    Thread-Starter lothar01

    (@lothar01)

    Noch ein Versuch, vielleicht hat auch jemand anderes noch eine Idee.

    In normalem HTML außerhalb von WordPress:

    <?php echo "Test1"; ?>
    <?php echo "<h1>Test2</h1>"; ?>

    Inhalt des Quelltextes der HTML-Seite:

    Test1<h1>Test2</h1>

    Das gleiche in einer wordpress-Seite ergibt:

    <p><?php echo „Test1″; ?><br />
    <?php echo “

    <h1>Test2</h1>
    <p>& #8222;; ?></p>

    Die Ursache muss demnach in WordPress liegen.
    (im Quelltext keine Leerstelle zwischen & und #

    Was meinst du mit „Das gleiche in einer wordpress-Seite ergibt“?
    Fügst du den Code als Seiteninhalt (Menü Seite > Bearbeiten, Editor) ein?

    Thread-Starter lothar01

    (@lothar01)

    Ja, und zwar unter „Text“ (nicht „visuell“.

    Thread-Starter lothar01

    (@lothar01)

    Nachfolgendes wird wohl der Grund sein. Aber wie kann ich dies ändern?
    Falls Sicherheitsbedenken: Seiten können nur von mir verändert werden.

    Nicht jeder HTML-Code wird korrekt eingebunden. Manchmal kommt es vor, dass der Quellcode in WordPress verändert und der Inhalt nicht korrekt dargestellt wird. PHP-Code wird in der Regel ausgeklammert und funktioniert somit nicht. Dabei handelt es sich um eine Sicherheitseinstellung, dass kein ungewünschter Schadcode eingebunden werden kann.

    Richtig, der Editor ist zur Erfassung von Inhalten gedacht, nicht für PHP. PHP-Code wird „entschärft“, in dem Code-Zeichen in Ersetzungszeichen (Character Entities) umgewandelt werden. Sonst könntest du beliebigen PHP-Code einfügen und damit z.B. alle Zugangsberechtigungen umgehen.

    Ursprünglich war von einem Child Theme die Rede („… habe ich das child: twentyfifteen-child definiert mit functions.php und style.css …“). Templates und Plugins bestehen aus PHP-Code und du kannst eigenen PHP-Code einfügen.

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 23)
  • Das Thema „Problem mit Pfadangabe“ ist für neue Antworten geschlossen.