WordPress inny header tylko na jednej stronie

wp-logoWordPress w przeciwieństwie do np. Joomla nie posiada wbudowanej możliwości wyświetlania danego modułu tylko na wybranych stronach. Z jednej stronie dzięki temu cała platforma jest lżejsza, z drugiej strony prędzej czy później zajdzie potrzeba stworzenia np. innego headera na jednej stronie. Taki header może np zawierać tematyczny slider, który będzie miał sens wyświetlania jedynie na konkretnej stronie/wpisie.

Jak w większości sytuacji istnieje kilka możliwości wykonania danego zadania. Ja skorzystam ze stworzenia drugiego pliu header.php, który nazwę header-slider.php, potem w single.php dodam warunek, że jeżeli wpis ma id (i tutaj podam id postu, na którym ma sie wyświetlać inny header), to pobierz header-slider.php, w innym wypadku pobierz header.php.

Tworzymy wpis w WordPress

Dodajemy nowy wpis, wypełniamy treścią i publikujemy. Sczytujemy jego id.

Tworzymy plik header-slider.php

Zapewne plik header.php mamy już utworzony, najlepiej więc go zduplikować i zapisać jako header-slider.php

Dopisujemy w single.php warunek jaki header ma być wczytany

Standardowo header.php wczytujemy za pomocą linijki
<?php get_header(); ?>

Aby wczytać nagłówek header-slider.php wystarczy dodać do powyższej linijki parametr slider:
<?php get_header( 'slider' ) ?>

Teraz musimy tylko dodać warunek kiedy ten slider ma być wczytany. Załóżmy, że nasza strona ma id 10. Zapis w phpie będzie zatem przesyłał informację mniej więc tak: Jeśli wpis ma id 10, to wyświetl header-slider.php, jeśli nie, to wyświetl header.php Kod będzie wyglądał następująco:

<?php
if ( is_single ( '10' ) ) :
get_header( 'slider' );
else :
get_header();
endif;
?>

WordPress potrafi znaleść w powyższym kodzie dany wpis nie tylko po id, ale również po nazwie, przy czym ze względu na niektóre litery w naszym języku oraz spacje nie polecałbym tego rozwiązania.

Oczywiście to rozwiązanie możemy wykorzystać z nieskończoną liczbą plików header.php. Również cały warunek możemy zamknąć w obrębie jednego znacznika php. Załóżmy, że mamy wpis o id 10, gdzie pobierzemy header „slider” oraz wpis o id 11, gdzie chcemy wyświetlić „formularz”.

Zatem tworzymy kolejny plik o nazwie header-formularz.php, odpowiednio go edytujemy.

Nasz warunek zostanie tutaj rozbudowany o dodatkowy parametr elseif();

<?php
if ( is_single ( '10' ) ) :
get_header( 'slider' );
elseif ( is_single ( '11' ) ) :
get_header( 'formularz' );
else :
get_header();
endif;
?>

Inny header tylko na stronie głównej

Jeśli chcemy by tylko na stronie głównej była inna treść lub elementy wystarczy skorzystać z parametry is_home();

<?php
if ( is_home() ) :        //jeśli jest strona główna
get_header( 'glowna' );  //pobierz plik header-glowna.php
else :                   //jeśli inna niż główna
get_header();           // pobierz plik header.php
endif;
?>

Jedna odpowiedź do “WordPress inny header tylko na jednej stronie

Dodaj komentarz