WordPress 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;
?>
cool php kocha cię