Unterschiedliche header und footer laden

  • Hallo Leute,
    ich möchte in die page.php eine if-abfrage bauen, die die Seite auf eine gewisse Eigenschaft prüft und dann nicht die standard header.php oder footer.php läd sondern eine andere Datei.
    Dazu habe ich header.php header-header2.php und footer.php sowie footer-footer2.php angelegt.

    Als zu prüfende Eigenschaft sollen die Seiten, die es betrifft ein bestimmtes Benutzerdefiniertes Feld beinhalten. Für den Footer funktioniert das ganze auch schon einwandfrei:

    PHP
    <?php $foot2= get_post_custom_values('foot2'); ?>
    <?php
    if ( (!(empty($foot2))) )  :
      get_footer('footer2');
    else :
      get_footer();
    endif;
    ?>

    Nur auf gleichem Wege funktioniert das nicht für den header. Es kommt zwar kein Fehler, aber die alternative header-header2.php wird nicht geladen:

    PHP
    <?php $head2= get_post_custom_values('head2'); ?>
    <?php
    if ( (!(empty($head2))) )  :
      get_header('header2');
    else :
      get_header();
    endif;
    ?>

    Die header-header2.php an sich funktioniert allerdings. Wenn ich in die page.php einfach nur:

    PHP
    <?php get_header('header2'); ?>

    reinschreibe wird die alternative header-datei geladen.

    Kann mir Jemand sagen, warum die Methode, die für den Footer funktioniert nicht auch gleichermaßen für den Header funktioniert?

    Danke schonmal!

    • 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

  • Wo lässt Du $head2 per [COLOR=#000000][COLOR=#0000bb]get_post_custom_values[/COLOR][COLOR=#007700] [COLOR=Black]setzen? Vor dem Loop? Ich denke das funktioniert hier nur innerhalb des Loops. Beim Footer ist es Glückssache wenn foot2 so gesetzt ist. Solltest Du noch weitere Abfragen für zum Beispiel "verwandte Artikel" oder so vor dieser Abfrage drin haben, kann es schnell passieren das $foot2 von einem falschen Artikel gesetzt wird. Du solltest diese Variablen also immer innerhalb des eigentlichen Loops setzen lassen. Ist jetzt mal so ins blaue geraten^^[/COLOR]
    [/COLOR][/COLOR]

  • Ja, du könntest recht haben, dass es nicht innerhalb des loops funktioniert. Allerdings stehen get_footer und get_header ja immer außerhalb des loops und bei Footer funktioniert es ja auch - glück!? ... keine Ahnung :)

    Muss ich mir wohl Gedanken über alternative "Contitional Tags" machen. Habe es mit "is_page" probiert. Würde also alle Page-IDs angeben, die den alternativen Header nutzen sollen. Komischerweise funktioniert das nur, wenn die ID der entsprechenden Seite ganz vorne in der Liste steht, - ich werd wahnsinnig :x

    PHP
    <?php
    if ( is_page(array('119,127,203')) )  :
      get_header('header2');
    else :
      get_header();
    endif;
    ?>

    Also so funktioniert es auf der Page mit der ID 119 aber nicht auf 127 oder 203. Nur wenn ich auf diesen Seiten die Reihenfolge so ändere, dass 127 bzw 203 vorne in der liste steht - kann doch nicht sein :(

  • Allerdings stehen get_footer und get_header ja immer außerhalb des loops

    Richtig, aber da wird auch nur die Funktion aufgerufen und nicht ein Seiten Relevantes Feld wie in Deinem Fall [COLOR=#000000][COLOR=#0000bb]get_post_custom_values [COLOR=Black]abgefragt.[/COLOR][/COLOR][/COLOR]

    und bei Footer funktioniert es ja auch - glück!? ... keine Ahnung :)

    Da wurde get_post_custom_values ja auch durch den Loop gesetzt und liegt noch vor. Glück in sofern, da dieser unter Umständen je nach Theme Aufbau auch wieder von einer anderen Abfrage überschrieben werden könnte und so eben nur der zuletzt gesetze Wert genommen wird.

    Muss ich mir wohl Gedanken über alternative "Contitional Tags" machen. Habe es mit "is_page" probiert. Würde also alle Page-IDs angeben, die den alternativen Header nutzen sollen. Komischerweise funktioniert das nur, wenn die ID der entsprechenden Seite ganz vorne in der Liste steht, - ich werd wahnsinnig :x

    Versuch es wie bgeissler es vorgeschlagen hat. Sollte dann eigentlich gehen.

Jetzt mitmachen!

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