WP-DOC

Pisanie motywu

02.09 Pojedynczy wpis

Ostatnia modyfikacja: 19.01.2021

Do wyświetlenia pojedynczego wpisu, zgodnie z hierarchią plików motywu, służy plik single.php lub jego odmiana z dodatkiem slug, ID lub innym. Ze względu na prostą budowę motywu, na którym pracujemy plik single.php nie będzie posiadał dodatkowych znaków w nazwie.

Wyświetlanie pojedynczego wpisu

Na stronie głównej jak i w kategorii, do wyświetlenia pojedynczego postu, w pliku single.php, wykorzystamy tą samą pętlę. Nie potrzeba wprowadzać żadnych dodatkowych parametrów do pętli. WordPress sam identyfikuje jaki wpis w pliku single.php ma zostać wyświetlony. Jedyną różnicą jest usunięcie instrukcji warunkowej if oraz else.

Modyfikacja motywu

Podstawowa różnica w wyglądzie motywu między single.php a index.php czy category.php, będzie taka, że „obrazek wyróżniający”, będzie znajdował się między tytułem postu a jego treścią. Dlatego skopiuj plik index.php i nadaj mu nazwę single.php. Oprócz wyżej wymienionej różnicy należy pozbyć się przycisku „czytaj więcej” czy linku z nagłówka. Natomiast z funkcji the_content(), należy usunąć apostrofy. Funkcja ta w pliku single.php nie będzie generować linku do części artykułu. Reszta pozostaje bez zmiany. Na poniższym listingu zmiany jakie należy dokonać wewnątrz pętli.

single.php – modyfikacja pętli – fragment kodu

while (have_posts()) : the_post();
    ?>
    <article class="post_article post_article_single">
        <div class="post_article_content">
            <h1 class="post_article_title"><?php the_title(); ?></h1>
            <ul class="post_article_info">
                <li>Dodano: <?php the_time('d.m.Y'); ?></li>
                <li><a href="<?php echo esc_url(get_author_posts_url(get_the_author_meta('ID'))) ?>"><?php echo the_author_meta('display_name'); ?></a></li>
                <li><?php comments_popup_link('Brak komentarzy', '1 komentarz', '% Comments'); ?></li>
            </ul>

            <div class="post_article_img" style="background: url('<?php the_post_thumbnail_url('large'); ?>') center center no-repeat; background-size: cover"></div>

            <div class="text_post"><?php the_content(); ?></div>
        </div>
    </article>
    <?php
endwhile;

Lista zmian dokonanych w kodzie:

  1. Usunięcie instrukcji warunkowej if oraz else.
  2. Do znacznika article dodano klasę post_article_single, dzięki której będzie można nadpisać style dla elementów o nazwie klasy post_article_content oraz post_article_img.
  3. Usunięto znacznik a z nagłówka.
  4. Element div o nazwie klasy post_article_img został przesunięty po element ul.
  5. Z funkcji the_contnet() usunięto apostrofy.
  6. Usunięto cały znacznik p o nazwie klasy para_more.

Po zamianach w pliku single.php, należy dopisać kilka linijek kodu w pliku style.css. Najważniejszą zamianą jest rozciągnięcie elementów post_article_content oraz post_article_img na 100%. Na poniższym listingu kod CSS, który należy dopisać do pliku zaczynając od 184 linii kodu.

style.css – dodatkowe style – fragment kodu

/* STYLE POJEDYNCZEGO WPISU */
.post_article_single .post_article_content {
    width: 100%;
}

.post_article_single .post_article_img {
    width: 100%;
    height: 300px;
    margin-top: 20px;
}
/* --------------------------------- */

Teraz wpis powinien wyglądać jak na zdjęciu niżej.

Wpis na blogu
W pliku single.php wyświetlamy pełny wpis na blogu.

Zmiana wyglądu motywu, w zależności od wpisu

Jeżeli dla jakiegoś wpisu, chcemy dokonać drobnej modyfikacji motywu, nie musimy tworzyć dla niego osobnego pliku. Za pomocą funkcji is_single() można dokonać modyfikacji motywu. Jako jeden z argumentów przyjmuje ID wpisu. Wówczas dla tego posta możemy dokonać zmian w motywie. Poniżej lista wszystkich argumentów dla funkcji is_single():

  • ID wpisu;
  • nazwa wpisu;
  • slug (uproszczona nazwa) wpisu;
  • tablica z numerami ID, nazwami lub slug.

Jeżeli nie zostanie podany żaden argument funkcji is_single(), funkcja zwróci true, jeżeli będzie wyświetlana strona pojedynczego wpisu.

Funkcja zwraca true lub false w zależności od tego czy wpis istnieje czy też nie. W instrukcji warunkowej należy sprawdzić jaką wartość zwraca funkcja. Poniżej przykład wykorzystania funkcji.

Przykład wykorzystania funkcji is_single()

if(is_single(6)) {
    // Tutaj akcje jeżeli aktualnie jest wyświetlany post o numerze ID 6
}

Tablica argumentów dla is_single()

W przypadku kiedy zmiany będą dotyczyć kilku wpisów jednocześnie, wewnątrz funkcji is_single() należy utworzyć tablicę z argumentami, jak na listingu niżej.

Przykład użycia tablicy w funkcji is_single()

// Dla ID wpsiu
if(is_single(array(1,2))) {
    // Tutaj jakieś akcje 
}

// Dla nazwy wpsiu
if(is_single(array('Nazwa 1','Nazwa 2'))) {
    // Tutaj jakieś akcje 
}

// Dla slug wpsiu
if(is_single(array('nazwa-1','nazwa-2'))) {
    // Tutaj jakieś akcje 
}

// Tablica mieszana ID, nazwa, slug
if(is_single(array(6,'Nazwa 1','nazwa-2'))) {
    // Tutaj jakieś akcje 
}

Komentarze dla wpisu

Do pliku single.php, należałby podłączyć komentarze. Więcej o komentarzach w dziale 04.Komentarze.

Czytaj dalej…

02.10 Strona

KOMENTARZE

Jeżeli masz pytanie lub sugestie dotyczącą artykułu to napisz komentarz. Wartościowe komentarze zostaną umieszczone jako opinie warte uwagi.

Napisz komentarz

Wszystkie pola są obowiązkowe. E-mail nie będzie udostępniony, ani wykorzystywany do rozsyłania wiadomości reklamowych.

Jeszcze nikt nie napisał komentarza.