Funktionen von Wordpress in eine parallele Seite einbinden

  • Abend,

    ich bin gerade ein wenig am verzweifeln, ich weiß sogar nicht genau wie ich mein vorhaben schildern soll, aber ich versuche es.

    Mein vorhaben:
    Wenn sich ein User einloggt, soll sich eine neue Seite aufmachen die aber nicht so ausschaun soll wie der Rest der Seite, sondern sozusagen als eine kleine private Seite mit eigenständigem Layout ABER mit allen Funktionen von Wordpress.

    Das Problem dabei ist das er GERADE die neue Seite aufmacht aber nicht mehr die Funktionen von Wordpress drin hat.

    z.B. wenn ich diese Überprüfung drin stehen habe

    PHP
    if (is_user_logged_in())

    erkennt er es nicht mehr und zeigt mir diese Fehlermeldung:

    PHP
    Fatal error:  Call to undefined function language_attributes() in ..

    Wie kann ich die Wordpress Funktionen in eine parallele Seite einbinden?

    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

  • Gibt es einen bestimmten Grund, wieso diese zweite Seite nicht als Teil der existierenden Seite realisiert werden kann? Du könntest das z.B. mit statischen Seiten umsetzen, die ein eigenes Template kriegen. Das würde dann einfach komplett anders aussehen und könnte auch den Loginschutz umsetzen. Dann hättest Du alle WP-Funktionen zur Verfügung.

  • Gibt es einen bestimmten Grund, wieso diese zweite Seite nicht als Teil der existierenden Seite realisiert werden kann? Du könntest das z.B. mit statischen Seiten umsetzen, die ein eigenes Template kriegen. Das würde dann einfach komplett anders aussehen und könnte auch den Loginschutz umsetzen. Dann hättest Du alle WP-Funktionen zur Verfügung.

    Diese 2te Seite sollte schon als Teil sein, nur sollte sie komplett anders aussehen und sich immer getrennt aufmachen, diese 2te Seite will ich als kleinen internen Bereich (nur für Angemeldete User) nutzen.

    Wie kann man das realisieren? Könntest du dein Vorschlag etwas genauerer beschreiben?

    Gruß reebo_one

  • Wenn Du das umsetzt musst Du natürlich aufpassen, dass nicht Teile dieses Bereichs unbeabsichtigt sichtbar werden. Prinzipiell wäre folgendes zu tun:

    * Entscheiden was Du brauchst. Reichen statische Seiten? Brauchst Du einen Feed? Posts? Ich gehe im weiteren davon aus, dass statische Seiten reichen.
    * Lege eine Startseite für diesen Bereich an.
    * Je nachdem was Du für ein Menü verwendest sorge dafür, dass diese Seite dort nicht verlinkt wird. Nutze dafür den exclude-Parameter im Theme oder baue das Menü einfach über Design > Menü im Backend manuell auf.
    * Lege eine Template-Datei an und weise sie der statischen Seite zu. Nimm erst mal eine Kopie der page.php des Themes (Child-Theme anlegen dafür falls Du z.B. Twenty Eleven verwendest oder sonst ein Theme bei dem mit Updates zu rechnen ist).
    * Über das Template kannst Du nun die Seite nach Belieben gestalten. Header, Footer, Sidebar raus und durch den speziellen Code für diese Seite ersetzen. Setze am Body-Tag eine CSS-Klasse, über die Du im Stylesheet Regeln speziell für diesen Bereich festlegen kann. Falls es mehr wird, leg ein zweites Stylesheet an und binde dieses ein oder binde vielleicht das Haupt-Stylesheet des Themes gar nicht ein und definiere alles gleich neu.
    * Weitere Seiten des Bereiches legst Du als Unterseiten dieser speziellen Seite an und weist ihnen ebenfalls das Template zu. Ob man das irgendwie automatisieren kann, wäre zu überlegen.
    * Oben in der Template-Datei prüfst Du ob ein Nutzer mit der richtigen Rolle eingeloggt ist und falls nicht stellst Du nur eine Warnung dar.
    * Ebenfalls oben in der Datei im Header eine meta-robots-Angabe anbringen, welche Google und co vom Indexieren des Seitenbereichs abhält.

    Zu beachten wäre dann noch folgendes, wozu mir gerade keine Details einfallen:
    * Die Seiten sollen nicht über die Suche gefunden werden können. Kann man da sicher irgendwie ausschließen, zur Not per exclude=ID der Parent-Seite in der search.php. Testen mit Hauptseite und einer Unterseite.
    * Falls Du eine Google-Sitemap verwendest, werden die Seiten da vermutlich mit aufgelistet, was sie eigentlich nicht sollen. Kann man das vermeiden?!
    * Falls an den Member-Only-Seiten Bilder/Dokumente hochgeladen werden, sind diese prinzipiell für jeden, der die URL kennt auch ohne Login abrufbar. Falls hier ein Loginschutz beabsichtigt ist, müsste man zu etwas mehr Aufwand greifen.

    Hm, wenn ich mir das so anschaue lohnt es sich vielleicht als Schritt 1 mal nach Plugins für einen Members-Only-Bereich zu recherchieren. Ist sonst doch etwas viel Handarbeit. ;-)

  • OK ich habs gerade so gemacht mit:

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

    Jetzt gehen alle Wordpress Funktionen, nur leider nicht die Funktionen die in der Template drin sind, bzw. die Funktion von functions.php bindet er nicht ein.

    Habe echt keinen Schimmer was ich machen kann.

  • Zitat

    Jetzt gehen alle Wordpress Funktionen, nur leider nicht die Funktionen die in der Template drin sind, bzw. die Funktion von functions.php bindet er nicht ein.

    Die functions.php des Themes wird mit ziemlicher Sicherheit eingebunden. Da muss der Fehler irgendwo anders liegen. Was heißt denn "geht nicht"? PHP-Fehler wegen unbekannter Funktion?

  • Ich wollte eine jQuery Funktion nutzen aber die ging irgend wie nicht, diese Funktion ging erst nach dem einbauen von jQuery manuell in die index datei von dieser zweiten Seite, hier der Code:

    PHP
    <script type="text/javascript" src="/wp-content/themes/mydesign/js/jquery-1.4.2.min.js"></script>

    Also dachte ich, dass die functions.php datei nicht eingebunden wird, da ich sonst das jQuery nicht manuell einbinden müsste. Oder mache ich was anderes falsch?

    Gibts eine Möglichkeit "Shortcodes" und "Plugins" in dieser zweiten Seite zu nutzen, weil bis jetzt schlugen meine Versuche mit Shortcodes fehl.
    So habe ich sie in in zweite Seite eingebaut, und so hat er mir sie dann auf seite auch angezeigt, also ging es nicht :(

    PHP
    [Shortcode]

    Das ist mein erster Versuch überhaupt eine zweite Seite mit anderem Layout zu intergrieren und daher brauche jede Hilfe die ich nur kriegen kann :)

  • Ein Seitentemplate ist keine von WP getrennte Sache, es gelten dort die gleichen Regeln wie in allen anderen Theme-Dateien auch. Ich vermute also, dass Deine Probleme aus Missverständnissen bzw. Unkenntnis einiger Funktionen resultieren. Shortcodes z.B. kannst Du nicht einfach in eine Theme-Datei schreiben und erwarten, dass sie ausgeführt werden, das klappt nirgends. Es gibt aber eine Funktion, do_shortcode glaube ich, die das macht. Such mal im Codex oder hier im Forum, das war vor wenigen Wochen schon Thema.

    Ob und wo Du jQuery einbindest kann ich Dir so nicht sagen. Du kannst es über die header.php des Themes einbinden oder besser noch über einen enqueue_script-Aufruf, z.B. in der functions.php. Letzteres klappt nicht, wenn der wp_header() und wp_footer()-Aufruf aus der Datei entfernt wurde. Hast Du im Seitentemplate die Header und Footer komplett rausgenommen? Falls ja musst Du diese beiden Aufrufe aus der header.php bzw. footer.php an die entsprechende Stelle im Seitentemplate kopieren.

  • Habe mir schon gedacht dass man Shortcodes nicht einfach so einbinden kann :D aber leider war zu blöd es auch zu akzeptieren.

    Habe in mein Admin-Bereich paar leere Angabe-Felder eingebaut die den Text das ich im Admin-Bereich angebe auf die Startseite weiter leiten, sieht so aus:

    und hier der Code das auf der Startseite eingebaut ist um den Text zu empfangen:

    PHP
    <?php echo $design_options['enet_message1'];?>

    Das Problem dabei ist, dass hier nur HTML akzeptiert wird, wenn ich PHP oder Shortcodes eingebe geht das nicht, wie kann ich das ändern das er sowohl auch PHP und Shortcodes annimmt und mir auf der Startseite dir ordertnlich anzeigt.


    Das zweite Thema wäre das ich echt header() und footer() aus dieser zweiten Seite rausgenommen habe, da er mir z.b. das menü von der ersten Seite einbindet, was ich natürlich nicht will, da diese 2te Seite ganz anders ausschauen sollte.

    Weiß echt nicht weiter :(

  • Zitat

    Das Problem dabei ist, dass hier nur HTML akzeptiert wird, wenn ich PHP oder Shortcodes eingebe geht das nicht, wie kann ich das ändern das er sowohl auch PHP und Shortcodes annimmt und mir auf der Startseite dir ordertnlich anzeigt.

    Sorry, hier kann ich Dir echt nicht folgen. In den Theme-Dateien kannst Du PHP und HTML verwenden, im Beitrag einer statischen Startseite HTML und Shortcodes. In Themedateien gehen Shortcodes mit do_shortcode() verpackt. PHP in Beiträgen/Seiten kann man machen, das ist aber keine gute Idee, finde ich. Da hat man dann in der Regel irgendwas falsch aufgebaut, wenn das nötig erscheint.


    Zitat

    Das zweite Thema wäre das ich echt header() und footer() aus dieser zweiten Seite rausgenommen habe, da er mir z.b. das menü von der ersten Seite einbindet, was ich natürlich nicht will, da diese 2te Seite ganz anders ausschauen sollte.

    header() und footer() sind die Funktionen, welche die header.php und footer.php einbinden, die brauchst Du nicht. Du brauchst aber die beiden Aufrufe:

    PHP
    <?php wp_head(); ?>

    und

    PHP
    <?php wp_footer(); ?>

    Dadurch werden Hooks aufgerufen, die z.B. JavaScripte ausgeben.

Jetzt mitmachen!

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