Jak dodać na stronie głównej zawartość innej strony?

  • Poziom trudności:

Funkcjonalność którą chciałbym Ci przedstawić ma naprawdę szereg zastosowań. Chciałbym, żebyś zerknął na stronę główną 500sekund.pl i zobaczył bloki tekstu w trzech kolumnach umieszczone na dole pod listą tagów. Szablon przygotowany na potrzeby strony nie zawierał takiej możliwości ale prosta modyfikacja kodu pozwoliła na dodanie do strony głównej dodatkowego elementu. Poniżej instrukcja jak to można zrobić samodzielnie.

Krok 1

Rozpocznij edycję pliku functions.php (w sekcji Wygląd -> Edytor).

Teraz wklej w ramach kodu PHP (pomiędzy nawiasami <?php oraz ?>) następujący kod:


function get_post_page_content( $atts ) {
			extract( shortcode_atts( array(
				'id' => null,
				'title' => false,
			), $atts ) );

			$the_query = new WP_Query( 'page_id='.$id );
			while ( $the_query->have_posts() ) {
				$the_query->the_post();
			        if($title == true){
			        ?><h2><?php the_title(); ?></h2> <?php
			        }
			        the_content();
			}
			wp_reset_postdata();

		}
		add_shortcode( 'my_content', 'get_post_page_content' );

Krok 2

Połowa roboty już za nami. Teraz stwórz nową stronę i umieść tam treść, którą chcesz umieścić na witrynie. Po opublikowaniu strony przejdź do Strony -> Wszystkie strony  i najedź kursorem myszy na dopiero co opublikowaną stronę. Pojawi się w dole przeglądarki adres np.

http://twojastronainternetowa.pl/wp-admin/post.php?post=8185&action=edit

Ciebie interesuje w tym momencie tylko cyfra, która wyświetla się po post= tak więc zapamiętaj lub zapisz ją. To będzie numer ID strony.

Krok 3

Teraz przejdź jeszcze raz przez Wygląd -> Edytor, przejdź do home.php (lub index.php jeśli home.php nie ma) i wklej w dowolnym miejscu strony (np. przed stopką tak jak zrobiłem to u siebie) poniższy kod:

<div class="kontener"><?php echo do_shortcode( '[[my_content id="8189" title="true" /]]' ); ?></div>

DIV z klasą możesz nazwać dowolnie i później odwołać się do niego za pośrednictwem kodu CSS. Nazwa klasy jest dowolna, więc możesz ją zmienić na dowolną inną (niekoniecznie musi to być kontener). Dalej znajdziesz polecenie wywołania kodu zawartego w ostrych nawiasach czyli skonfigurowanej wcześniej funkcji my_content. Pamiętaj aby w id= podać numer ID wcześniej pozyskany z listy wszystkich stron.

W sytuacji gdybyś umieszczał tą stronę w innej stronie/wpisie (nie w edytorze HTML ale zwyczajnie w trybie wizualnym lub tekstowym strony lub wpisu) wtedy użyj tylko tego co w nawiasach ostrych. W tej sytuacji zamiast:

wystarczy że napiszesz:

<div class="kontener"><?php echo do_shortcode( '[[my_content id="8189" title="true" /]]' ); ?></div>

Dodawanie echo do_shortcode jest konieczne dopiero wtedy, gdy wklejasz shortcode do HTML’a poprzez edytor plików szablonu.

Inne zastosowania

Rozwiązanie o którym Ci napisałem genialnie się sprawdza w przypadku stron typu onepage. Są to strony na których treści umieszczone są nie na osobnych podstronach ale jedna pod drugą. Menu pozwala na płynne lub skokowe nawigowanie po całej stronie. Przygotowanie witryny jest stosunkowo proste i wymaga wklejenia tylu kodów  z kroku 3 ile stron zamierzasz umieścić na stronie głównej witryny.

UDOSTĘPNIJ