Eigenes PHP Script in Blog integrieren

  • Hi,

    Ich habe ausserhalb von Wordpress ein PHP Script geschrieben, dass aus mehreren Dateien besteht und funktionalitäten wie registrieren, einloggen, nutzen eines internen Bereiches und ein paar Datenbankabfragen beinhaltet.

    Nun würde ich das ganze ganz gerne in das Blog einbetten. Zwei Lösungsansätze habe ich bisher verfolgt und ich bin bei beiden gescheitert:


    Option 1: Naiv wie ich bin habe ich im Backend einfach neue Seiten erstellt, den HTML Editormodus aktiviert und den PHP Code reingepastet. Das PHP wird zwar interpretiert, aber es funktioniert nicht, weil ich natürlich über include('') oder <form action=""> auf dateien verweise, die mit diesen namen anscheinend nicht mehr existieren. Wordpress frisiert ja irgendwie die URLs um. Wenn ich die geänderte URL als absoluten Pfad angebe, dann tut sich leider auch nichts.


    Option 2: Daraufhin habe ich versucht über FTP die Dateien einfach hochzuladen und dann weiter zu schauen wie ich das Layout in meine Scripte reinbekomme. Das scheitert leider schon daran, dass ich die Dateien sobald sie hochgeladen sind nicht unter der Adresse erreichen kann wie sie im FTP-Verzeichnisbaum heissen.

    Ich komme einfach nicht weiter. Vielleicht könnt ihr mir ja Tipps geben. Da wäre ich sehr dankbar!

    Viele Grüße
    qde

    • 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

  • Lege die Dateien in Deinem Themeordner ab. Dann hol sie Dir via include/require(_once) in Deinen Template-Dateien. Solltest Du sie im Admin-UI brauchen, dann schreibe in Deine functions.php sowas wie:

    PHP
    function_name_blabla() { 
    include_once(get_bloginfo('template_directory').'/datei_name.php'); 
    }
    add_action('admin_action_hook_xy', 'function_name_blabla');

    Hierbei sollte Dein admin_action_hook_xy dem action hook entsprechen, den Du suchst. Finden kannst Du ihn indem Du die passenden WordPress Core Dateien nach do_action('admin_action_hook_xy'); durchsuchst. Das ganze wird a) sehr schwierig und b) nicht auf Anhieb funktionieren. Weiters öffnest Du Dir damit, wenn Du nicht aufpasst, was da eingegeben wird, alle Türen für eventuelle Hackangriffe.

  • Hallo,

    ich vermute mal du willst zu deinem eigenem Script den gesamten allgemeinen Bereich von WP anzeigen lassen, Header, Footer, sidebar usw.

    Dann ist es am einfachsten du legst dir in deinem theme Verzeichnis eine neue template datei an. Kopier die page.php und benenne sie um in meinedatei.php. In den Kopf der Datei schreibst du

    PHP
    <?php
    /*
    Template Name: meinedatei
     
    */
    ?>



    Dann lässt du nur noch drin was du von WP brauchst header, footer usw. In der Datei kannst du deinen eigenen PHP code einbauen oder halt irgendwas includen.

    Bei den usern würde ich aber auf die WP userverwaltung zurückgreifen, ist sicherer als da was eigenes zu coden

  • Vielen Dank für die Antworten. Ich werde mal versuchen die als zweites gepostete Lösung umzusetzen. Nach der Arbeit werde ich gleich mal mein Glück versuchen.

    Da ich Login, registrierung etc. schon komplett fertig geschrieben habe werde ich nicht die wp userverwaltung nehmen. Das ganze ist einigermaßen "sicher" programmiert so das zumindest keine unsinnigen Zeichen in die SQL-Queryies gehen. :)

    Danke für die schnelle Hilfe!

  • Also ein eigenes Template anlegen klappt.

    Wenn ich dann ein include() über einen dateinamen im gleichen verzeichnis mache, schafft er es nicht den code dort auszuführen - selbst wenn es nur ein echo 'test'; ist.

    das gleiche problem tritt auf, wenn ich absolut referenziere - also über über "http://domain/wp-content/themes/etc.. ".

    wenn ich die inkludierte datei über den browser aufrufen möchte, dann bekomme ich ein 500 internal servererror, der mir sagt die dateirechte der datei seien "fehlerhaft".

    der wpcontent ordner hat das recht 755, ebenso der themesordner.
    der ordner des themes und die datei selbst - welche sich im gleichen verzeichnis befindet wie das template - haben sogar vollzugriff, also 777. die templatedatei habe ich ebenfalls auf 777 gesetzt.

    Was kann ich tun?

  • das mit dem Datei namen im gleichen Verzeichnis funktioniert nicht, du musst den Pfad von deiner Root aus angeben
    include ("/wp-content/themes/deintheme/deinedatei.php");

    das mit dem http geht grundsätzlich nicht, das verhindern viele server, da mußt du den absoluten Pfad angeben, der sieht aber je nach server config unterschiedlich aus, ungefähr so

    /srv/www/vhosts/http://www.deine-domain.de/httpdocs <- pfad bis zur Root, wenn der blog in der root liegt, daran hängt man dann

    /wp-content/themes/deintheme/deinedatei.php

    dann hast du den absoluten Pfad. Am einfachsten ist es man findet den einmal heraus und stellt den bei jedem include vor den Dateinamen, diese Daten stehen dir aber auch über die Umgebungsvariablen von WP zur Verfügung

  • Super!!! Vielen Dank.

    Jetzt bleibt eigentlich nur noch eine letzte Frage offen (hoffe ich mal):

    edit: hier stand mist :-)

    edit2: Jetzt kommt doch noch ne Frage auf. Wie kann ich Seiten rückstandslos löschen? Das tolle Autosave macht mir hin und wieer einen Strich durch die Rechnung so das ich die Seite weder ändern noch löschen kann. Es wird unfertiges PHP ausgeführt was dazu führt, dass die beiden FUnktionen nicht mehr funktionieren. Nun möchte ich über die Datenbank die Seiten entfernen. Wie geht das?

    Einmal editiert, zuletzt von qde (11. Dezember 2010 um 11:12)

Jetzt mitmachen!

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