Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Puchar WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Jak tworzyć własne szablony pojedynczych wpisów w WordPress?

Uwaga redakcyjna: Otrzymujemy prowizję z linków partnerskich na WPBeginner. Prowizje nie mają wpływu na opinie i oceny naszych redaktorów. Dowiedz się więcej o Proces redakcyjny.

Jeden z naszych klientów zapytał nas, jak tworzyć własne szablony pojedynczych wpisów w WordPress.

W WPBeginner pomogliśmy wielu właścicielom witryn internetowych ulepszyć ich blogi za pomocą unikatowych układów dla poszczególnych wpisów. Własne szablony pojedynczych wpisów umożliwiają korzystanie z różnych projektów dla twoich wpisów na blogu, nadając każdemu z nich odrębny wygląd. Wiele motywów WordPress oferuje kilka szablonów stron, ale w razie potrzeby możesz również stworzyć swój własny.

W tym artykule pokażemy ci wiele metod łatwego tworzenia własnych szablonów pojedynczych wpisów w WordPressie, dzięki czemu będziesz mógł wybrać ten, który najlepiej odpowiada twoim potrzebom.

How to Create Custom Single Post Templates in WordPress

Kiedy potrzebny jest własny szablon pojedynczego wpisu?

Czasami możesz chcieć mieć inny wygląd i styl dla niektórych wpisów na twojej witrynie internetowej WordPress. Na przykład, możesz chcieć użyć innego układu dla funkcji artykułów lub relacji w określonej kategorii.

W tym miejscu potrzebny jest własny szablon pojedynczego wpisu w WordPress.

Domyślnie WordPress używa szablonu pojedynczego wpisu w oparciu o hierarchię szablonów WordPress. Wszystkie motywy są dostarczane z szablonem single.php i jest on domyślnie używany dla wszystkich twoich pojedynczych wpisów.

Niektóre motywy mogą również zawierać dodatkowe szablony lub układy do wyboru.

Jest to bardzo podobne do tworzenia własnego szablonu strony. Większość motywów WordPress zawiera również szablony stron, z których można korzystać podczas edycji wpisu lub strony w WordPress.

Choosing a Page Template

Mając to na uwadze, przyjrzyjmy się, jak łatwo tworzyć własne szablony pojedynczych wpisów w WordPress. Pokażemy ci kilka metod, abyś mógł użyć tej, która działa najlepiej dla ciebie.

Tworzenie szablonów pojedynczych wpisów przy użyciu edytora bloków

Ta metoda tak naprawdę nie tworzy szablonu wpisu i ma ograniczoną elastyczność. Jest to jednak najprostszy sposób na zapisanie twojego pojedynczego układu wpisów, a następnie ponowne ich użycie.

Domyślny edytor bloków WordPress posiada wbudowaną funkcję, która umożliwia zapisywanie i ponowne wykorzystywanie bloków. Jednym z takich bloków wielokrotnego użycia jest blok grupy.

Blok grupowy pozwala na umieszczenie kilku bloków i całych układów wpisów w jednej grupie. Następnie możesz zapisać ten blok grupowy i użyć go ponownie w innych twoich wpisach.

Przyjrzyjmy się, jak używać bloku grupy do zapisywania własnych szablonów wpisów.

Najpierw należy utworzyć nowy wpis w WordPress. Następnie wystarczy dodać blok grupy do obszaru treści.

Add Group Block

Teraz możesz zacząć dodawać bloki do bloku grupy, aby utworzyć układ pojedynczego wpisu dla twojego bloga WordPress.

Można dodawać dowolne bloki, w tym kolumny, multimedia i tekst, obrazki okładek i inne.

Add Blocks to the Group

Kiedy będziesz zadowolony z układu, który stworzyłeś, musisz podnieść myszkę i wybrać blok grupy.

Wystarczy kliknąć ikonkę menu z trzema kropkami, a następnie wybrać opcję „Dodaj do bloków wielokrotnego użycia”.

Add Reusable Block

Następnie należy podać nazwę bloku wielokrotnego użycia, a następnie kliknąć przycisk Zapisz. WordPress zapisze teraz twój blok wielokrotnego użycia, w tym wszystkie bloki wewnątrz bloku grupowego.

Następnie możesz edytować dowolny wpis istniejący na twojej witrynie internetowej lub utworzyć nowy. Na ekranie edycji wpisu wystarczy kliknąć przycisk „Utwórz nowy blok” i poszukać zapisanego bloku w karcie „Do wielokrotnego użycia”.

Reuse Block

Dodaj blok do twojego wpisu, a WordPress będzie wczytywał cały twój blok grupowy ze wszystkimi blokami i ustawieniami tak, jak je zapisałeś.

Ta metoda umożliwia zapisanie twojego własnego układu. Nie pozwala jednak na zmianę sposobu, w jaki twój motyw obsługuje pojedyncze wpisy.

Jeśli zależy Ci na większej elastyczności, przejdź do następnego kroku.

Tworzenie własnych szablonów pojedynczych wpisów przy użyciu SeedProd

Najprostszym sposobem na stworzenie własnego szablonu pojedynczego wpisu jest użycie SeedProd. Jest to najlepsza wtyczka do tworzenia witryn WordPress, która umożliwia tworzenie pięknych układów stron i własnych szablonów bez pisania jakiegokolwiek kodu.

Możesz użyć kreatora przeciągnij i upuść SeedProd, aby stworzyć w pełni własny motyw WordPress, w tym niestandardowe szablony pojedynczych wpisów.

Pierwszą rzeczą, którą musisz zrobić, jest zainstalowanie i włączanie wtyczki SeedProd. Aby uzyskać więcej informacji, zobacz nasz przewodnik krok po kroku, jak zainstalować wtyczkę WordPress.

Podczas włączania należy wpisz klucz licencyjny. Informacje te można znaleźć na Twoim koncie w witrynie internetowej SeedProd.

SeedProd license key

Następnie nadszedł czas na stworzenie własnego motywu WordPress. Jest to znacznie prostsze niż się wydaje.

Tworzenie własnego motywu WordPress

Najpierw należy przejść do strony SeedProd ” Kreator motywów. Tutaj możesz użyć jednego z gotowych motywów SeedProd jako punktu wyjścia. Pozwoli to zastąpić twój istniejący motyw WordPress nowym, dostosowanym projektem.

Można to zrobić, klikając przycisk „Motywy”.

Create your custom theme

Zostanie wyświetlona lista profesjonalnie zaprojektowanych motywów dla różnych rodzajów witryn internetowych. Na przykład, istnieją szablony o nazwie „Nowoczesny biznes”, „Agencja marketingowa” i „Motyw dla brokera hipotecznego”.

Zapoznaj się z opcjami i wybierz tę, która najlepiej odpowiada twoim potrzebom, klikając ikonkę znacznika wyboru.

Select a Theme That Matches Your Needs

Po wybraniu motywu, SeedProd wygeneruje wszystkie potrzebne szablony motywów, w tym jeden dla pojedynczych stron i drugi dla pojedynczych wpisów.

Każdy szablon zawiera atrakcyjne układy i treści zastępcze, które można łatwo dostosować do własnych potrzeb.

SeedProd Creates All the Templates You Need for Your Theme

Aby dowiedzieć się więcej o tworzeniu motywu za pomocą SeedProd, zapoznaj się z naszym przewodnikiem na temat łatwego tworzenia własnego motywu WordPress bez żadnego kodu.

Dostosuj domyślny szablon pojedynczego wpisu.

SeedProd ułatwia dostosowanie domyślnego szablonu „Single Post” za pomocą kreatora stron typu „przeciągnij i upuść”.

Wystarczy kliknąć odnośnik „Edytuj projekt” znajdujący się pod szablonem. Spowoduje to otwarcie twojego szablonu wpisu w edytorze wizualnym SeedProd.

Click the 'Edit Design' Link Under the Single Post Template

Edytor wizualny SeedProd ma układ 2-kolumnowy. Po lewej stronie znajdują się bloki i sekcje, które możesz dodać do swojego projektu.

Po prawej stronie znajduje się podgląd szablonu, w którym możesz zobaczyć swoje zmiany w czasie rzeczywistym.

SeedProd Visual Editor Blocks and Sections

Łatwo jest również dostosować własny układ szablonu wpisu. Wystarczy kliknąć dowolny blok, aby zobaczyć jego ustawienia w lewej kolumnie.

Na przykład, jeśli klikniesz na tytuł wpisu, będziesz mógł zobaczyć jego ustawienia. Teraz możesz zmienić wyrównanie, wielkość litery, poziom nagłówka i inne.

Click on a Block to Change Its Settings

Kliknięcie karty Zaawansowane umożliwia zmianę kolorów pisma, odstępów i innych stylów.

Dodatkowe bloki można dodawać, przeciągając je z lewej kolumny do kolumny podglądu. SeedProd wykorzystuje tagi szablonów do pobierania dynamicznych treści, takich jak tytuły wpisów, wyróżniające się obrazki, komentarze i inne. Pozwala to na dodawanie treści do szablonu bez konieczności edytowania każdego wpisu z osobna.

Na przykład, możesz dodać blok Wpisy na końcu treści twojego wpisu. Spowoduje to wyświetlenie ostatnich wpisów, które Twoi odwiedzający mogą chcieć przeczytać po zakończeniu obecnego, aktualnego wpisu. Blok ten będzie wyświetlany automatycznie we wszystkich wpisach korzystających z tego szablonu.

Add a Posts Block to the Bottom of Your Single Posts Template

Następnie można zmienić ustawienia bloku Wpisy, aby dostosować wyświetlaną treść.

Można na przykład wyświetlać treści z określonych kategorii, stosować układ dwukolumnowy i zmieniać liczbę wyświetlanych wpisów.

SeedProd Posts Block Settings

Zachęcamy do spędzenia czasu na eksperymentowaniu z różnymi blokami i odkrywaniu ich ustawień.

Po utworzeniu czegoś, czego chcesz użyć jako szablonu twojego wpisu, nadszedł czas, aby go zapisać, klikając zielony przycisk „Zapisz” w prawym górnym rogu. Następnie można zamknąć edytor wizualny SeedProd, klikając ikonkę zamknięcia „X”.

When You're Finished, Save the Single Post Template

Możesz dostosować resztę swojego motywu WordPress w ten sam sposób. Jeśli jednak potrzebujesz niewielkiej pomocy, zapoznaj się z naszym przewodnikiem krok po kroku na temat tworzenia własnego motywu WordPress za pomocą SeedProd.

Gdy będziesz zadowolony z tego, jak wszystko wygląda, upewnij się, że przełącznik „Włącz motyw SeedProd” jest włączony. Twoja witryna WordPress będzie teraz korzystać z motywu SeedProd i własnego szablonu pojedynczego wpisu.

Enable the SeedProd Theme

Korzystanie z ustawień motywu do tworzenia własnych układów pojedynczych wpisów

Wiele popularnych motywów WordPress posiada wbudowane ustawienia umożliwiające dostosowanie wyglądu twojego szablonu pojedynczego wpisu.

Jeśli twój motyw obsługuje te ustawienia, będziesz mógł je znaleźć na ekranie edycji wpisu. Dostępne opcje mogą się zmieniać w zależności od używanego motywu.

Na przykład motyw Astra oferuje opcje konfiguratora podczas edycji pojedynczego wpisu. Za pomocą tych opcji można zmieniać panele boczne, ukrywać nagłówki, tytuły, menu i nie tylko.

Astra Theme Single Post Template Customization

Z drugiej strony, wiele z najlepszych motywów WordPress zawiera gotowe do użycia szablony.

Jeśli twój motyw zawiera szablony pojedynczych wpisów, znajdziesz je w panelu „Szablon” lub „Atrybuty wpisu” podczas edycji wpisu.

Choosing a Template When Writing a Single Post

Te szablony to kompletne układy, których można używać bez konieczności konfiguracji.

Ręczne tworzenie własnych szablonów pojedynczych wpisów za pomocą kodu

Ta metoda jest nieco zaawansowana, ponieważ wymaga edycji plików motywu, kopiowania i wklejania kodu oraz opcjonalnego dodawania własnego CSS. Jeśli nie robiłeś tego wcześniej, zapoznaj się z naszym poradnikiem na temat kopiowania i wklejania kodu w WordPress.

Po pierwsze, musisz otworzyć zwykły edytor tekstu na twoim komputerze, taki jak Notatnik i wkleić do niego następujący kod:

<?php
/*
 * Template Name: Featured Article
 * Template Post Type: post, page, product
 */
  
 get_header();  ?>

Ten kod definiuje nowy szablon o nazwie „Funkcja artykułu” i udostępnia go dla wpisów typu treści, stron i produktów.

Powinieneś zapisać ten plik jako wpb-single-post.php na twoim pulpicie. Następnie należy dodać szablon do twojej witryny WordPress. Aby to zrobić, musisz użyć klienta FTP, aby przesłać plik do obecnego, aktualnego katalogu motywu.

Teraz możesz logować się do obszaru administracyjnego WordPress i tworzyć lub edytować wpisy. Przewiń nieco w dół na ekranie edycji wpisu, a powiadomienie pojawi się nowy panel „Szablon” lub meta box „Atrybuty wpisu” z opcją wyboru szablonu.

Select Your Custom Post Template

Zobaczysz tam swój własny konfigurator „Featured Article”.

W tej chwili twój szablon jest zasadniczo pusty, więc wybranie go spowoduje po prostu wyświetlenie białego ekranu.

Poprawmy to.

Najłatwiej to zrobić, kopiując kod z pliku single.php twojego motywu i używając go jako punktu wyjścia. Będziesz musiał otworzyć plik single.php, a następnie skopiować wszystko po linii get_header().

Następnie musisz wkleić ten kod na końcu twojego pliku wpb-single-post.php. Teraz możesz zapisać ten plik i przesłać go z powrotem na twój serwer.

Będzie on jednak wyglądał dokładnie tak samo, jak Twój obecny, aktualny szablon pojedynczego wpisu. Możesz teraz rozpocząć wprowadzanie zmian we własnym szablonie pojedynczego wpisu.

Możesz dodawać własne klasy CSS, usuwać panele boczne, tworzyć szablony o pełnej szerokości lub cokolwiek zechcesz.

Tworzenie własnych szablonów pojedynczych wpisów według kategorii

Chcesz użyć własnego szablonu pojedynczego wpisu opartego na kategoriach? Na przykład, możesz nadać wpisom z kategorii podróże inny układ niż wpisom z kategorii fotografia.

Można to zrobić za pomocą kreatora motywów SeedProd lub kodu.

Tworzenie własnych szablonów pojedynczych wpisów według kategorii za pomocą SeedProd

Wcześniej omówiliśmy, jak dostosować domyślny szablon pojedynczego wpisu w narzędziu SeedProd Theme Builder. Na tym jednak nie koniec. Dzięki SeedProd możesz dodać dowolną liczbę własnych szablonów postów, takich jak inny układ dla każdej kategorii wpisów.

Aby utworzyć nowy szablon pojedynczego wpisu, wystarczy kliknąć odnośnik „Duplicator” pod oryginalnym szablonem wpisu. Nowy szablon o nazwie „Single Post – Copy” zostanie utworzony i dodany na górze strony szablonów motywu.

Create a New Post Template by Duplicating the Default Post Template

Możesz dostosować nowy szablon w taki sam sposób, w jaki dostosowałeś wcześniej domyślny szablon pojedynczego wpisu. Wystarczy kliknąć odnośnik „Edytuj projekt” szablonu i wprowadzić dowolne zmiany za pomocą edytora wizualnego SeedProd.

Po zakończeniu konfiguratora szablonu należy dodać pewne warunki, aby SeedProd wiedział, które wpisy powinny korzystać z tego szablonu. W tym przypadku chcemy, aby był on wyświetlany podczas zobaczenia wpisów w ramach jednej kategorii.

Click the 'Edit Conditions' Link

Można to zrobić, klikając odnośnik „Edytuj warunki” szablonu, co spowoduje wyświetlenie nowego okna.

Tutaj możesz nadać szablonowi nazwę i priorytet. Domyślny szablon pojedynczego wpisu ma priorytet 0, więc upewnij się, że nadałeś mu wyższy priorytet, aby był wyświetlany w pasujących kategoriach.

Add Conditions to Display the Template for a Certain Category

W sekcji „Warunki” wybierz „Ma kategorię” z drugiego menu rozwijanego, a następnie wpisz nazwę kategorii w ostatnim polu. Na przykład, jeśli chcesz, aby tylko wpisy z kategorii fotografia korzystały z tego układu, wpisz „fotografia”.

Kiedy skończysz, kliknij przycisk „Zapisz” i teraz ten szablon będzie używany dla wszystkich wpisów w pasującej kategorii.

Jest to najprostszy sposób na utworzenie wielu własnych szablonów wpisów w WordPress. Nie wymaga znajomości kodu i nie spowoduje przypadkowego uszkodzenia plików motywu.

Tworzenie własnych szablonów pojedynczych wpisów według kategorii przy użyciu kodu

Jest to kolejna metoda dla tych, którzy czują się komfortowo dodając kod do plików motywu.

Po pierwsze, musisz dodać ten kod do pliku functions. php twojego motywu lub wtyczki fragmentów kodu.

/*
* Define a constant path to our single template folder
*/
define(SINGLE_PATH, TEMPLATEPATH . '/single');
 
/**
* Filter the single_template with our custom function
*/
add_filter('single_template', 'my_single_template');
 
/**
* Single template function which will choose our template
*/
function my_single_template($single) {
global $wp_query, $post;
 
/**
* Checks for single template by category
* Check by category slug and ID
*/
foreach((array)get_the_category() as $cat) :
 
if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
 
elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';
 
endforeach;
}

Ten kod najpierw sprawdza, czy WordPress żąda pojedynczego wpisu. Jeśli tak, to mówi WordPressowi, aby szukał szablonu w katalogu /single/ twojego motywu WordPress.

Teraz należy dodać pliki szablonów zdefiniowane przez ten kod.

Połącz się ze swoim hostingiem WordPress za pomocą klienta FTP lub Menedżera plików w cPanelu i przejdź do katalogu /wp-content/themes/your-theme-folder/.

Wewnątrz twojego obecnego, aktualnego katalogu motywu, musisz utworzyć nowy katalog o nazwie „single”. Następnie otwórz ten katalog i utwórz nowy plik. Nadaj temu plikowi nazwę single-cat-{category-slug}. Zastąp {category-slug} uproszczoną nazwą twojej kategorii.

Na przykład, jeśli masz kategorię o nazwie „Aktualności”, utworzysz plik single-cat-news.php. Jeśli masz kategorię o nazwie „Porady dotyczące podróży”, utwórz szablon single-cat-travel-tips.php i tak dalej.

Creating Single Post Template for Categories

Teraz te pliki szablonów będą całkowicie puste. Jako punkt wyjścia możesz skopiować treść pliku single.php z katalogu twojego motywu i wkleić go do każdego z tych szablonów. Następnie będziesz musiał edytować te szablony, aby wprowadzić twoje pożądane zmiany.

Gdy skończysz, możesz przejść do twojej witryny internetowej i zobaczyć wpis. Zostanie użyty szablon utworzony dla kategorii, w której znajduje się wpis.

Załóżmy teraz, że masz wpis złożony w dwóch kategoriach: Wiadomości i Porady dla podróżnych. WordPress automatycznie wyświetli szablon „Aktualności”, ponieważ pojawia się on jako pierwszy w kolejności alfabetycznej.

Z drugiej strony, jeśli złożyłeś wpis w kategorii i nie utworzyłeś szablonu dla tej kategorii, WordPress powróci do domyślnego szablonu single.php twojego motywu.

Tworzenie własnych szablonów pojedynczych wpisów dla określonych autorów

Załóżmy, że chcesz, aby wpisy napisane przez konkretnego autora wyglądały inaczej na twojej witrynie internetowej. Możesz to zrobić za pomocą kodu, postępując zgodnie z tą samą techniką, którą pokazaliśmy dla kategorii.

Po pierwsze, musisz dodać ten kod do pliku functions. php twojego motywu lub wtyczki fragmentów kodu.

/**
* Define a constant path to our single template folder
*/
define(SINGLE_PATH, TEMPLATEPATH . '/single');
 
/**
* Filter the single_template with our custom function
*/
add_filter('single_template', 'my_single_author_template');
 
/**
* Single template function which will choose our template
*/
function my_single_author_template($single) {
global $wp_query, $post;
 
/**
* Checks for single template by author
* Check by user nicename and ID
*/
$curauth = get_userdata($wp_query->post->post_author);
 
if(file_exists(SINGLE_PATH . '/single-author-' . $curauth->user_nicename . '.php'))
return SINGLE_PATH . '/single-author-' . $curauth->user_nicename . '.php';
 
elseif(file_exists(SINGLE_PATH . '/single-author-' . $curauth->ID . '.php'))
return SINGLE_PATH . '/single-author-' . $curauth->ID . '.php';
 
}

Następnie należy połączyć się z witryną internetową za pomocą FTP lub menedżera plików w cPanelu, a następnie przejść do katalogu /wp-content/themes/your-theme-folder/. Jeśli jeszcze nie utworzyłeś w nim katalogu o nazwie /single/, to utwórz go teraz.

Wewnątrz tego katalogu należy utworzyć szablon, używając nazwy użytkownika autora w nazwie szablonu. Na przykład single-author-johnsmith.php.

Ten szablon będzie pusty, więc możesz skopiować i wkleić treść szablonu single.php twojego motywu i użyć go jako punktu wyjścia.

Użytkownik może teraz przejść na twoją witrynę internetową, aby zobaczyć wpisy utworzone przez konkretnego autora. Zostanie użyty utworzony szablon.

Mamy nadzieję, że ten artykuł pomógł ci dowiedzieć się, jak tworzyć własne szablony pojedynczych wpisów w WordPress. Możesz również dowiedzieć się, jak śledzić odwiedzających twoją witrynę WordPress lub zapoznać się z naszą listą wtyczek WordPress, które musisz mieć, aby rozwinąć swoją witrynę.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Ujawnienie: Nasze treści są wspierane przez czytelników. Oznacza to, że jeśli klikniesz na niektóre z naszych linków, możemy otrzymać prowizję. Zobacz jak WPBeginner jest finansowany, dlaczego to ma znaczenie i jak możesz nas wspierać. Oto nasz proces redakcyjny.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

Najlepszy zestaw narzędzi WordPress

Uzyskaj BEZPŁATNY dostęp do naszego zestawu narzędzi - zbiór produktów i zasobów związanych z WordPressem, które każdy profesjonalista powinien mieć!

Reader Interactions

70 komentarzyZostaw odpowiedź

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Jasmine says

    I am getting this message when I try to use the code:

    Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'my_single_template’ not found or invalid function name.

    Any ideas as to why?

  3. Iulian says

    All good but it breaks the default single.php.

    In other words this „On the other hand, if you filed a post in a category and didn’t create a template for that category, then WordPress will fallback to the default single.php template of your theme.” is not working.

    Any solution?

  4. Thomas says

    Hi, I am trying to follow the step:
    Open the single.php file and then copy everything after the get_header() line.
    Under:
    Manually Creating Custom Single Post Templates in WordPress
    However, I don’t have any „get_header()” function in that file.

    • WPBeginner Support says

      Your specific theme may have some unique coding, we would recommend reaching out to the support for your specific theme and they should be able to assist.

      Administrator

  5. bob says

    Thanks for this. All my auto generated files (author, not found etc) are using my site template then putting a white section with white text on thepage. its also starting at the top of the page (so its white text on a white background mostly hidden behind a page header)

    I believe your article will help me sort this mess out.

    Thank you

    • WPBeginner Support says

      Our article should help and if you reach out to your theme’s support they may be able to assist as well :)

      Administrator

    • WPBeginner Support says

      The templates should still be found under the top right section in the content panel

      Administrator

  6. John says

    Am I correct in thinking that once you create a custom post template php file, for it to work as a template, you still need to code the php file, as there is no way to save a new post as a template. Is this correct?

    Thank you for your help.

    • WPBeginner Support says

      That is correct, for changing the template unless you are using a page builder there is not a method to set it up without coding.

      Administrator

  7. Haripal Reddy says

    Hello Author,

    I followed the steps as you mentioned. I have CPT albums. single-albums.php copied same code to other file wpb-single-albums.php and added template code like /*
    * Template Name: custom template
    * Template Post Type: albums
    */
    and changed some required changes. But after selecting this template in edit post but it displays default one (single-albums.php) page.

    How can i fix this please help

    • WPBeginner Support says

      You may want to check the current working template to ensure you have the post type correct

      Administrator

  8. Alice says

    Thanks for your great post. I have 2 questions: Are single post templates the same with custom post type templates? If the are different, can you show me how to create a custom post type template?

  9. aziz says

    hello
    than you for the post
    i did everything and worked like i wanted.
    but i had a small problem
    after adding the code to function.php single.php stopped showing data
    is there anything i can do?

  10. Binesh says

    Hi, Thanks for your Tutorial…

    As per your tutorial I have created a custom Post type. But now I am facing an issue with comment. While submitting the comment it redirected to search…
    Pls suggest a solution for this..
    Thanks in Advance

  11. Mike says

    Hello.

    I’m using this & enjoying it greatly! :)
    However, I’m finding the following warning in my error logs around this code:

    [warn] mod_fcgid: stderr: PHP Warning: Use of undefined constant SINGLE_PATH – assumed 'SINGLE_PATH’ (this will throw an Error in a future version of PHP)

    Any thoughts on how to fix that?

    Your snippet starts with „define(SINGLE_PATH,…” so I’m not sure what else to do here.

    • WPBeginner Support says

      That error is saying it wants SINGLE_PATH to be surrounded by single quotes (”) which you can do for that warning :)

      Administrator

  12. Jojo says

    So I followed your steps and its working for the new category slug single page but not for the default single.php.

    How can I get this to work? Perhaps the default single.php path is wrong?

    Thanks!

  13. Hil says

    Hi,

    I am overthinking this but…if I want every blog post to look the same, do I just create the Layout (I use Divi theme), use the above first method (make a new version of single.php named properly) and choose that every time I want to create a post? That simple?

    Also, to add the custom CSS, do you add to the php file, and how? Where within it do you add it? How should it look? That’s the part that I haven’t yet found any reference on how to do. Can you do an example based on just having every blog post look one way?

    Thank

  14. Malgorzata says

    Hi, thanks dfor great tutoriasl. It is working amazing but not for new categories, which doesnt have special template. Unfortunatley it is not getting the code from default single.php file. I will appreciate some help how to make it work.

  15. STEVE says

    Hi, Thanks for the tutorial!

    I have a question. How would we apply custom CSS that would only effect the Posts pages?

    Thanks

  16. TRAVIS says

    What if you want to make your new template the default for everything. So that anytime a post is created it is automatically selected as the default template?

  17. Jae says

    I bet there are plugins that you can use to do the job without the hassle of coding and child themes. It would’ve been great if you’d researched and shared that in this post too.

  18. peyman says

    I use your method but I can’t set custom css for this posts.
    for example in function.php when I check is_page_template(’single-cat-news’) the statement not getting true and my custom css for this kind of post not running. what should I do in this case?

    • Bikram says

      True.
      I’m also having this problem. The full-width template works well for post and pages but when it comes to custom post type, the CSS codes don’t work and goes back to normal page size without a sidebar.
      I’m having a hard time finding a solution to that problem.

  19. Mike says

    Need some additional help with this…

    Following the instructions on this page (along with the small modifications noted within my comments on 12/2/17 and 12/12/17), I’ve been able to get this working reliably.

    HOWEVER, I’ve run into the issue where using this method to call a custom template does not seem to get registered with the call of body_class classes.

    For example, if I set a custom template on a page (where I’m using WordPress’ „Template” drop-down within the „Page Attributes” sidebar in the editing view – then the body_classes that are output would include that template name.

    Such as:

    <body class="page-template-my_custom_template page page-id-2..."

    But, using this method, the body classes just return:

    <body class="page-template-default page page-id-2..."

    Any idea on how to ensure the body classes reflect a custom single post template?

    • Mike says

      Here’s the answer (for my theme, at least – your experience may vary).

      Adding the following to [b]functions.php[/b] did the trick for me:

      add_filter('body_class','add_category_to_single');
        function add_category_to_single($classes) {
          if (is_single() ) {
            global $post;
            foreach((get_the_category($post->ID)) as $category) {
              // add category slug to the $classes array, starting with 'category-'...
              $classes[] = "category-$category->category_nicename";
            }
          }
          // return the $classes array
          return $classes;
        }
      
  20. Dzungx Corn says

    I created a single-cat-news.php file for „News”. My „News” category has two child: „Camera” and „Smartphone”. The post in „Smartphone” display in single-cat-news.php (S after N in alphabet), but the post in „Camera” display in default single.php (C before N in alphabet). I want post in „Camera” display in single-cat-news.php, what must I do? I selected both „News” and „Camera” for my post.

  21. Sarmad Gardezi says

    Im viewing your Blog from last 2 years. I explored whole web to find this but i got the correct working code from here i just love your Blog keep it up :)

  22. Mike says

    When using this approach to specify a custom post template for a single post within a specific category, I was finding that WordPress was NOT defaulting back to single.php in instances where a single-cat-WHATEVER.php file didn’t exist for a specific category.

    I fixed this by adding the following line before the end of the function:

    else
    return SINGLE_PATH . '/single.php';

    So that, this code:


    /**
    * Checks for single template by category
    * Check by category slug and ID
    */
    foreach((array)get_the_category() as $cat) :

    if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
    return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';

    elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
    return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';

    endforeach;
    }

    Became this:


    /**
    * Checks for single template by category
    * Check by category slug and ID
    */
    foreach((array)get_the_category() as $cat) :

    if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
    return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';

    elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
    return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';

    else
    return SINGLE_PATH . '/single.php';

    endforeach;
    }

    Does this seem like the right approach? Or, is there something else that I may have done to break the default functionality?

  23. Mike says

    Thank you for this clear 'how to.’

    One note: for those of us using a CHILD THEME, I’ve found that changing…

    define(SINGLE_PATH, TEMPLATEPATH . '/single’);

    to:

    define(SINGLE_PATH, get_stylesheet_directory() . '/single’);

    (within the „Define a constant path to our single template folder” section) ensures that child theme’s directory is checked for single templates instead of the parent theme’s directory.

    This may also be the reason that it’s not working for some of the other commenters above.

    Good luck, everyone!

    • Stephanie Lewis says

      Thank you so much for your help! I was wondering why it kept pointing me back to the parent theme instead of the child theme.

  24. Olayinka says

    Thank you for this article.
    I will want to know how I can further customise the layout of this single custom post template, like placing an image in the post before the content and in the footer.

  25. oussama says

    Hi,
    I need to change the order of 3 things in the post page which they are in the bottom of the article:
    1-a pagination plugin.
    2-an ad.
    3-social share icons.

    I want to make them in the following order (vertically):
    1-the ad
    2-the social share icons
    3-the pagination plugin

    How can I do that please?

  26. Linda Holiner says

    Thank you for your great tutorials. I am having trouble with this one. I added the code to my functions.php but I’m not getting the single post template. Do I need to make a call to the function or does WordPress do that? Is there some way I can debug the function?

    I just want posts of a particular category to display differently when you link to them.

  27. Taufiq Mahmud says

    I wanted to make a custom post page where registered user of my site can able to post without using wordpress’s default post.php

  28. Pierrick says

    Hi! Thank you for this tutorial, but I’m quite new to web design and I started creating a whole wordpress theme. Everything works fine on my website, but I am trying to make it possible to add pages that all use a template I created, (like the page of a product in a catalogue) but I have no idea how to do that. I first tried to do so by creating a page template in which I put loops that display the content of an article or a page, such as its title, its text and the values of some custom fields. To do so I used a query_posts, but it requires to put the post’s or page’s id with „page_id=” or „p=”, which means the template is for one specific page, and I would have to create a template for each new page I add to this catalogue , and precising the id of the page/post manually in it, while what I wanted was to create a single template for all the pages of the catalogue…
    So while doing my research to find a solution, I found your article, and I tried to create a post using the new single post template, but no matter which template I select in the list, when I go to the url of the post it displays my home page… I’m probably doing everything wrong, and I’m not even sure I understood what a single post is and if it’s really what I need… I would really appreciate it if you could give me some clues on what I should do to solve my problem, or if there’s some tutorial somewhere that could help me…
    Thank you,

    Pierrick.

    • WPBeginner Support says

      Hi Pierrick,

      We are not sure we understand your problem completely. However, if you just want to create a template to be used by any page then custom page template is the right approach. Since you want users to be able to see any page, this means you don’t need to use query_posts, your loop will begin with the standard

      <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
      //
      		// Post Content here
      		//
      	} // end while
      } // end if
      ?>
      

      Administrator

  29. alex says

    Hi,

    I have a local setup with WP 3.7.x and Template Post Type: post, page, product is not available.

    How can i create seperate caterory php files for each post category???

    single-{slug}.php
    category-{slug}.php

    all doesn’t seem to work

    Any tips?

  30. Mark says

    I have set this up to work with categories, however when I select a post that does not have a category it fails to pick up the default template and does not display the post. I suspect my theme may be at fault. How would I hard code the single.php in the parent directory as the default to use if no category template exists ?

    Works perfectly if I copy the single.php into the /single/single-cat-name.php file but I don’t want 40+ duplicate files.

    • Eric Besso says

      first copy single.php to the /single folder

      then include this code right before the endforeach;

      else

      return SINGLE_PATH . '/single.php’;

  31. Lyssie says

    This is exactly what I was looking for, thank you for spelling this out so simply! It leaves me with a question though: I removed my sidebar but now there’s just an empty space where it used to be. How can I stretch the main content section to cover the entire space? Thanks again!

    • WPBeginner Support says

      Hi Lyssie,

      That’s because your theme has defined content area width relative to the sidebar. You need to use inspect tool to find out which CSS class your conntent-area uses and then adjust by adding custom CSS to make it full width.

      .page-template-full-width .content-area {
          width: 100%;
          margin: 0px;
          border: 0px;
          padding: 0px;
      }
      
      .page-template-full-width .site {
      margin:0px;
      }
      

      Please see our guide on how to create full width page in wordpress

      Administrator

      • Lyssie says

        Thanks for the fast response! This was very helpful! Now, if I see:
        div id=”primary” class=”content-area”>

        when I use the inspect tool, which is the class my content area uses?

        • Lyssie says

          Oops, that didn’t come out right.
          div id=”primary” class=”content-area”
          main id=”main” class=”site-main” role=”main”

          article id=”post-4773″ class=”post-4773 post type-post status-draft format-standard hentry category-travel-2″
          div id=”featured-image”
          /div

  32. Joe Yee says

    That’s a great article and should helps a no-coder person like me. Customization of template would be something scary that you might break the theme altogether. Do you recommend make the custom template on a child theme or is it okay to do it right on the theme. Thanks a bunch.

    • WPBeginner Support says

      Hi Joe,

      You will not be changing any of your theme’s existing files. Instead, you will be creating a new file. If anything goes wrong you can simply delete the template and your site will be back to normal.

      Yes creating a child theme is the recommended best practice.

      Administrator

Zostaw odpowiedź

Dziękujemy za pozostawienie komentarza. Pamiętaj, że wszystkie komentarze są moderowane zgodnie z naszymi polityka komentarzy, a Twój adres e-mail NIE zostanie opublikowany. NIE używaj słów kluczowych w polu nazwy. Przeprowadźmy osobistą i konstruktywną rozmowę.