Wiesz, kiedy musisz pokazać pewne posty WordPress na podstawie niestandardowych pól? My też przez to przechodziliśmy.
Kiedy zaczynaliśmy z WordPress, widok jakiegokolwiek fragmentu kodu wydawał się onieśmielający, zwłaszcza gdy wszystko, czego chcieliśmy, to wyświetlanie postów z konkretnymi informacjami.
Ale oto dobra wiadomość: po pomocy tysiącom początkujących użytkowników WordPressa odkryliśmy, że nawet coś, co brzmi technicznie, jak filtrowanie niestandardowych pól, nie musi być przerażające.
W rzeczywistości przeprowadzimy Cię przez prostą metodę kodu, aby to zrobić.
To rozwiązanie działa doskonale, niezależnie od tego, czy publikujesz zwykłe posty na blogu, czy niestandardowe typy postów na podstawie określonych kryteriów.

📌 Szybka uwaga: Ten samouczek dotyczy wyświetlania postów WordPress, jeśli mają one wartość wpisaną w określonym niestandardowym polu.
Jeśli chcesz wyświetlać niestandardowe pola na stronie głównej posta WordPress, zapoznaj się z naszym przewodnikiem jak wyświetlać niestandardowe pola w motywach WordPress.
Dlaczego wyświetlać posty WordPress z określonym polem niestandardowym?
Kiedy tworzysz post na swojej stronie WordPress, możesz użyć niestandardowych pól, aby dodać dodatkowe metadane do posta.
Metadane to dodatkowe informacje, które można dodać do wpisu. Na przykład, jeśli pisałbyś recenzję książki, mógłbyś dodać niestandardowe pola dla „Imię autora” lub „Ocena gwiazdkowa”.
Pola niestandardowe to zaawansowana koncepcja WordPressa i istnieje wiele sposobów na dodanie pól niestandardowych w WordPressie. Znajdziesz wiele pomocnych wskazówek, jak używać i wyświetlać pola niestandardowe w naszym poście, WordPress Custom Fields 101: Tips, Tricks, and Hacks.

Jeden z naszych użytkowników zapytał nas, jak wyświetlać posty WordPress tylko wtedy, gdy istnieje określone niestandardowe pole. Może to być przydatne, jeśli chcesz utworzyć niestandardową stronę, która zawiera listę wszystkich postów zawierających określone niestandardowe pole i/lub wartość.
Po udzieleniu odpowiedzi pomyśleliśmy, że najlepiej będzie podzielić się nią ze wszystkimi, aby większa społeczność WordPress.org również mogła z niej skorzystać.
Edycja plików motywu WordPress: O czym należy pamiętać
Aby prawidłowo wykonać ten samouczek, pamiętaj o kilku rzeczach:
- Ten samouczek obejmuje edycję plików motywu WordPress za pomocą kodu, więc nie jest on najbardziej odpowiedni dla początkujących. Jeśli jesteś nowy w tym, musisz przeczytać nasz przewodnik na temat jak kopiować i wklejać kod w WordPressie.
- Zalecamy wykonanie kopii zapasowej Twojej witryny i/lub użycie środowiska stagingowego, aby Twoja aktywna witryna nie została naruszona w przypadku wystąpienia błędu. Dzieje się tak, ponieważ będziesz dodawać kod do plików motywu, co może być ryzykowne.
- Zalecamy zrozumienie, jak działa hierarchia szablonów WordPress, abyś wiedział, gdzie później dodać kod.
- Będziesz musiał również zapoznać się z tym, jak działają pętle WordPress, ponieważ będziemy używać tych parametrów w zapytaniu WordPress.
Należy również pamiętać, że ten samouczek działa tylko z klasycznymi motywami WordPress, ponieważ motywy blokowe mają inny zestaw plików motywu.
Mając to na uwadze, przyjrzyjmy się, jak wyświetlić post WordPress tylko wtedy, gdy ma określone niestandardowe pole.
Jak filtrować posty na podstawie określonych pól niestandardowych
Zanim pokażemy Ci kod, którego musisz użyć, musisz wiedzieć, do którego pliku motywu musisz go dodać. Najprawdopodobniej będzie to szablon strony, taki jak index.php, archive.php lub page.php.
Załóżmy, że chcesz dodać go do pliku index.php motywu Twenty Twenty-One. Oto jak wygląda obecnie część pętli WordPressa w tym pliku:
<?php
if ( have_posts() ) {
// Load posts loop.
while ( have_posts() ) {
the_post();
get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
}
// Previous/next page navigation.
twenty_twenty_one_the_posts_navigation();
} else {
// If no content, include the "No posts found" template.
get_template_part( 'template-parts/content/content-none' );
}
get_footer();
Ten kod wykorzystuje domyślną pętlę WordPress (have_posts() i the_post()) do wyświetlania postów. Ta metoda jest odpowiednia dla większości standardowych motywów WordPress i służy do wyświetlania postów bez żadnego niestandardowego filtrowania ani sortowania.
Teraz załóżmy, że używasz niestandardowego pola „kolor”, tak jak w powyższym przykładzie. Będziesz musiał zastąpić cały ten kod poniższym fragmentem:
<?php
// The Query to show a specific Custom Field
$the_query = new WP_Query('meta_key=color');
// Load posts loop.
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
}
// Previous/next page navigation.
twenty_twenty_one_the_posts_navigation();
} else {
// If no content, include the "No posts found" template.
get_template_part( 'template-parts/content/content-none' );
}
// Reset Post Data
wp_reset_postdata();
get_footer();
W tym nowym kodzie wprowadziliśmy niestandardowe zapytanie, aby pobrać posty, które mają określone niestandardowe pole (w tym przypadku dowolny post z niestandardowym polem „kolor”).
Następnie używa niestandardowej pętli (if ($the_query->have_posts())) do iteracji po postach pobranych przez to niestandardowe zapytanie, wyświetlając treść każdego posta w taki sam sposób, jak w pierwszym fragmencie.
Dodaliśmy również funkcję wp_reset_postdata(), aby zapewnić, że WordPress po niestandardowym zapytaniu powróci do wyświetlania wszystkich postów poprawnie. Gwarantuje to płynne działanie witryny i wyświetlanie użytkownikom właściwych treści.
Teraz, co jeśli chcesz znaleźć posty, w których niestandardowe pole 'kolor' ma określoną wartość, na przykład 'niebieski'? Aby to zrobić, wystarczy dodać parametr 'meta_value' do zapytania.
Twój zaktualizowany kod zapytania będzie wyglądał tak:
$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );
💡Wskazówka Pro: Możesz jeszcze bardziej rozszerzyć filtrowanie za pomocą parametru meta_compare. Pozwala to znaleźć posty, które nie pasują do wartości.
Na przykład, aby wyświetlić wszystkie posty, gdzie kolor nie jest „niebieski”, Twoje zapytanie wyglądałoby tak:
$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue', 'meta_compare' => '!=' ) );
!= mówi WordPressowi, aby znalazł wszystkie posty, w których pole 'kolor' istnieje, ale nie jest równe 'niebieski'.
Istnieje wiele innych operatorów porównania, których można użyć, a które znajdziesz w oficjalnej dokumentacji deweloperskiej WordPressa.
Po zapisaniu kodu w pliku szablonu strony PHP, możesz sprawdzić swoją witrynę WordPress od strony front-end, aby zobaczyć swój kod w akcji.
Często zadawane pytania dotyczące wyświetlania posta, jeśli ma on określone niestandardowe pole
Oto kilka pytań, które nasi czytelnicy często zadają na temat wyświetlania posta, jeśli ma on tylko określone niestandardowe pole:
Czy jest sposób, aby to zrobić bez edycji plików motywu?
Tak, i jest to metoda, którą polecamy większości użytkowników. Wtyczka taka jak WPCode pozwala bezpiecznie dodawać niestandardowe fragmenty PHP, takie jak ten, bez bezpośredniego modyfikowania plików motywu.
Chroni to Twoją witrynę przed błędami i zapewnia, że Twoje dostosowania nie zostaną utracone podczas aktualizacji motywu.
Czy mogę filtrować posty według wielu niestandardowych pól?
Możesz. Funkcja WP_Query jest bardzo potężna i akceptuje bardziej złożone argumenty. Użyłbyś parametru 'meta_query', który pozwala na zbudowanie tablicy warunków do jednoczesnego dopasowania wielu niestandardowych pól.
Czy ta metoda działa z motywami blokowymi?
Ten konkretny samouczek koncentruje się na klasycznych motywach, edytując pliki takie jak index.php lub archive.php. Motywy blokowe używają Edytora Witryny i nie polegają na tych plikach.
Aby uzyskać podobny rezultat w motywie blokowym, użyłbyś bloku Pętla zapytań i jego wbudowanych opcji filtrowania, które nie wymagają niestandardowego kodu.
Jaka jest różnica między „meta_key” a „meta_value”?
Pomyśl o „meta_key” jako o nazwie etykiety, na przykład „Kolor” lub „Status”. „Meta_value” to rzeczywiste dane wprowadzone w tym polu, takie jak „Niebieski” lub „Opublikowany”.
Użycie klucza znajduje dowolny post z tym niestandardowym polem, podczas gdy użycie wartości znajduje dowolny post z tą konkretną informacją.
Dowiedz się więcej sposobów na dostosowanie swojej witryny WordPress
Oto więcej sposobów na dostosowanie stron WordPress:
- Jak inaczej stylizować poszczególne kategorie w WordPress
- Jak dodać niestandardowy pasek przewijania w WordPress
- Jak dodać niestandardowe style do widżetów WordPress
- Jak inaczej stylizować każdy wpis WordPress
- Jak używać skróconych kodów w motywach WordPress
- Jak wyróżnić nowe posty dla powracających odwiedzających w WordPress
- Jak zmienić stronę paska bocznego w WordPress
Mamy nadzieję, że ten samouczek pomógł Ci dowiedzieć się, jak wyświetlić post WordPress tylko wtedy, gdy ma określone pole niestandardowe. Możesz również zapoznać się z naszym kompletnym przewodnikiem po edycji strony WordPress oraz naszymi ekskluzywnymi wyborami najlepszych wtyczek Figma dla WordPress.
Jeśli podobał Ci się ten artykuł, zasubskrybuj nasz kanał YouTube po samouczki wideo WordPress. Możesz nas również znaleźć na Twitterze i Facebooku.
ahmed
Mam pytanie, panie, jeśli chcę wyświetlić pojedynczy post i niestandardowe pola, co powinienem zrobić.
Nie chcę wyświetlać postu z określonymi niestandardowymi polami. Chcę wyświetlić wszystkie niestandardowe pola posta.
Dave101
Cześć, dziękuję za pomocny tutorial. Mam pytanie, na stronie internetowej WordPress ustawiłem wartość meta o nazwie "meta_country", a następnie przypisałem do każdego posta kraj artykułu, np. "us", "uk", "fr"... Teraz próbuję dodać gdzieś na stronie głównej bloga link, który wyświetli listę wszystkich postów z określonym krajem i określonym tagiem. Na przykład wszystkie posty z "UK" oznaczone tagiem "APPLE".
Nie rozumiem, jak to zrobić, czy ktoś mógłby mi pomóc?
Максим Каминский
wielkie dzięki, bardzo pomogło!
pjhooker
Dzięki!
Eduard Unruh
omg w końcu DZIĘKI!
Mario M
Nie udało mi się wygenerować żadnych wyników, chyba że uwzględniłem parametr „post_type” w zapytaniu.
np. $the_query = new WP_Query(‘post_type=page&meta_key=color’);
sacha
Wspaniale, tak prosto i czysto.
Dziękuję.
scottlee.me
@ad Świetne pytanie! Ja też jestem ciekawy.
ad
Cześć,
Jak mógłbym wyświetlić posty, które NIE mają określonego niestandardowego pola? Masz jakiś pomysł?
Dzięki!!!
tara tin
z tego, co wiem z php, musi to być meta_key!=’your key’
;po prostu musisz wiedzieć, że „!” oznacza „nie”
brunobruno2
Pięknie! Dziękuję bardzo za udostępnienie. Działa jak marzenie.