Specifieke header.php oproepen.

Een opdrachtgever wil graag de mogelijkheid hebben om haar wordpresswebsite tweetalig te maken. Nu heb ik dat al een keertje voor een andere website gedaan, maar het ontwerp was al klaar en boven de kop van de website moet een horizontaal uitklapmenu komen. Nu wilde ik werken met twee pagina sjablonen: één voor de Nederlandse pagina’s en eentje voor de Nederlandse pagina’s. Maar nu kan ik wel de page.php van de template aanpassen, maar het menu staat in de header.php. En hoe kun je nu zorgen dat de juiste header bij de juiste pagina aangeroepen wordt.

De oplossing bleek eigenlijk best simpel. Bij het zoeken naar de string get_header in de map wp-includes stuitte ik op het bestand general-template.php en daar staat eigenlijk de oplossing al in. De functio get_header kent de mogelijkheid een parameter toe te voegen aan deze functio get_header() – tussen de haakjes kun je een toevoeging aan het bestand header instellen. Zet je in de page.php bijvoorbeeld get_header(nl) dan zal wordpress het bestand header-nl.php aanroepen. En dat was precies wat ik nodig had. Nu kan ik in de ene header het Engelse menu plaatsen en in de andere het Nederlandse menu. Nu nog puzzelen hoe ik dit voor de archives en post pagina ga aanpakken.

7 reacties

  1. Hi Karen,

    Erg handige tip! Ik moet op dit moment precies hetzelfde doen, echter werkt dit niet bij mij. Ik moest alleen de pagina’s gebruiken en de code om de pagina’s aan te roepen staat dus ook in header.php. Heb jij die get_header(nl) in de index.php geplaatst? Ik krijg namelijk nu een dubbele header.php..

    Als je een tip voor mij hebt graag, en anders in ieder geval bedankt voor dit article!

    Groetjes,
    Dylan

  2. Ik heb de get_header gewoon in alle bestanden staan, dus index.php, archive.php enz. Maar het is een beetje afhankelijk van je template/theme files hoe die zijn opgebouwd. Mijn header.php gaat t/m het menu en stopt daar. In de index.php, page.php, single.php etc begin ik met de get_header. Je hebt maar één get_header en door de juiste argumenten te plaatsen roep je de juiste header op. dus als je zegt get_header(nl), roep je de nederlandse header op.

  3. Ik werk alleen met de header.php, footer.php en index.php van het theme en natuurlijk de style.css. Ik heb de inhoud van ‘page.php’ in header.php geplaats en bij de NL versie laad deze prima. Ik heb een menu-item die linkt naar een mapje genaamd ‘EN’ en in dit mapje staat een index.php file met get_header(en) en get_footer(en) als inhoud. Nu heb ik in dezelfde map ook een header-en.php en footer-en.php file. Deze worden echter niet geladen, mag ik vragen hoe jij dit hebt ingedeeld?

  4. Hoi Dylan, ik werk als basis met header.php, index.php, footer.php en meestal ook sidebar.php. In de index.php roep ik dan de header, footer en sidebar op via de get_header, get_sidebar enz.
    Page.php, single.php enzo zijn vervangers van de index.php. Meer informatie hierover vind je in de codex: http://codex.wordpress.org/Templates_Hierarchy
    Index.php is in principe voldoende, maar wil je voor speciale pagina’s een andere opmaak dan vervang je de index.php voor een ander bestand, bijvoorbeeld de single.php voor een single post, de page.php voor een static page en je kunt voor de diverse statische pagina’s ook eigen templates maken. De index.php gebruik ik hierbij steeds als basis. Als eerste wordt altijd de index.php geladen en die zoekt er de andere bestanden bij (header, footer, sidebar).
    Ik snap nog niet precies hoe jij het hebt gedaan, want een page.php in de header laden dan krijg je een dubbele loop volgens mij, want de index.php laadt dan ook lijkt me.

    Ik had twee menu’s gemaakt (multilevelnavigation plugin) en in elke header riep ik een ander menu op. In de een dan een item Nederlands, die de Nederlandse startpagina oproept, met dus de Nederlandse header en daarin dus een item Engels, die de Engelse pagina oproept met daarbij de Engelse header. In de plugin aangegeven welke items in welk menu moeten komen.

    • Daar zijn vele middelen voor en het is in eerste instantie afhankelijk van de opbouw en mogelijkheden van je theme. Wat wil je aanpassen.. andere afbeelding, ander formaat?? Wat is je theme en zit daar geen optie in om een eigen header in te maken.

  5. Geweldig!
    Heel jammer dat dit niet op deze manier in Engelse handleiding staat.
    Ik heb me een aap gezocht om dit te vinden.
    Dank voor de publicatie!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *