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 wyświetlić wpis WordPress tylko wtedy, gdy ma określone własne pole?

Być może dodałeś własne pole do swoich wpisów w WordPressie i chcesz wyświetlać tylko wpisy z tym polem. Lub próbujesz utworzyć specjalną stronę, która zawiera wpisy z określoną wartością pola niestandardowego. Nie jesteś sam!

Jeden z naszych czytelników zapytał, jak to zrobić, i pomyśleliśmy, że pomocne będzie podzielenie się odpowiedzią ze wszystkimi.

Pola własne umożliwiają dodawanie dodatkowych informacji do twoich wpisów i stron. Świetnie nadają się do organizowania i filtrowania twoich treści. W tym artykule pokażemy, jak wyświetlać wpisy WordPress tylko wtedy, gdy mają określone pole własne.

How to Display a WordPress Post Only if It Has a Specific Custom Field

Uwaga: Ten poradnik dotyczy wyświetlania wpisów WordPress, jeśli mają one wartość wpisaną w określonym polu niestandardowym. Jeśli chcesz wyświetlać pola własne na front-endzie wpisu WordPress, możesz przeczytać nasz przewodnik na temat wyświetlania pól własnych w motywach WordPress.

Dlaczego warto wyświetlać wpisy WordPress z określonym polem własnym?

Kiedy tworzysz wpis na swojej witrynie internetowej WordPress, możesz użyć pól własnych, aby dodać do niego dodatkowe metadane. Metadane to informacje o wpisie, takie jak tytuł, autor i data publikacji.

Pola własne to zaawansowana koncepcja WordPressa i istnieje wiele sposobów na dodanie pól własnych w WordPressie. Wiele pomocnych wskazówek dotyczących używania i wyświetlania pól własnych znajdziesz w naszym wpisie WordPress Custom Fields 101: Tips, Tricks, and Hacks.

You Can Add Metadata to a Post Using Custom Fields

Jeden z naszych klientów zapytał nas, jak wyświetlić wpisy WordPress tylko wtedy, gdy obecne jest określone pole niestandardowe. Może to być przydatne, jeśli chcesz utworzyć własną stronę, która zawiera listę wszystkich wpisów zawierających określone pole niestandardowe i/lub wartość.

Po odesłaniu odpowiedzi pomyśleliśmy, że najlepiej będzie podzielić się nią ze wszystkimi innymi, aby większa społeczność WordPress.org również mogła z niej skorzystać.

Edycja plików twojego motywu WordPress: O czym należy pamiętać

Aby móc prawidłowo postępować zgodnie z tym poradnikiem, oto kilka rzeczy, o których należy pamiętać:

  1. Ten poradnik bierze biorący udział w edycji plików twojego motywu WordPress z kodem, więc nie jest najbardziej odpowiedni dla zupełnie początkujących. Jeśli jesteś początkujący, musisz przeczytać nasz przewodnik na temat kopiowania i wklejania kodu w WordPress.
  2. Zalecamy utworzenie kopii zapasowej twojej witryny internetowej i/lub korzystanie ze środowiska testowego, aby witryna na żywo nie miała wpływu w przypadku wystąpienia błędu. Wynika to z faktu, że będziesz dodawać kod do plików twojego motywu, co może być ryzykowne.
  3. Zalecamy zrozumienie, jak działa hierarchia szablonów WordPress, aby wiedzieć, gdzie później dodać kod.
  4. Konieczne będzie również zapoznanie się z działaniem pętli WordPress, ponieważ będziemy wywoływać te parametry w zapytaniu WordPress.

Należy również pamiętać, że ten poradnik 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ć wpis WordPress tylko wtedy, gdy ma określone pole własne.

Wyświetlanie wpisów WordPress tylko wtedy, gdy mają określone pole własne

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.

Powiedzmy, że chcesz dodać go do pliku index.php motywu Twenty Twenty-One. Oto jak wygląda obecnie część pętli WordPress tego 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 wpisów. Ta metoda jest odpowiednia dla większości standardowych motywów WordPress i służy do wyświetlania wpisów bez żadnego własnego filtrowania lub sortowania.

Załóżmy teraz, że używasz pola własnego „kolor”, jak w powyższym przykładzie. Będziesz musiał zastąpić cały ten kod poniższym fragmentem kodu:

<?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($the_query = new WP_Query('meta_key=color');), aby pobierać wpisy na podstawie określonej wartości pola własnego (w tym przypadku wpisy z polem własnym „kolor”).

Następnie używa niestandardowej pętli(if ($the_query->have_posts())) do iteracji po wpisach pobranych przez to niestandardowe zapytanie, wyświetlając treść każdego wpisu w taki sam sposób, jak w pierwszym fragmencie kodu.

Dodaliśmy również funkcjęwp_reset_postdata(), aby zapewnić, że WordPress powróci do poprawnego wyświetlania wszystkich wpisów po wykonaniu własnego zapytania. Dzięki temu witryna działa płynnie i wyświetla użytkownikom właściwą treść.

Teraz, jeśli chcesz wyświetlić konkretne wpisy, które mają własne pole z określoną wartością, wystarczy zmienić zapytanie z linii 3 w następujący sposób:

$the_query = new WP_Query( 'meta_value=blue' );

Spowoduje to wyświetlenie wszystkich wpisów, które mają wartość „niebieski” w dowolnym polu własnym.

Jeśli chcesz upewnić się, że pole „color” ma wartość „blue”, twój kod zapytania będzie wyglądał następująco:

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );

Możesz dowiedzieć się o dodatkowych parametrach, których możesz użyć w swoim zapytaniu na stronie referencyjnej kodu WordPress WP_Query.

Po zapisaniu kodu w pliku PHP szablonu strony, możesz sprawdzić swoją witrynę WordPress na front-endzie, aby zobaczyć twój kod w działaniu.

Dowiedz się więcej o sposobach na dostosowanie twojej witryny WordPress do własnych potrzeb

Oto więcej sposobów na dostosowanie własnych stron WordPress:

Mamy nadzieję, że ten poradnik pomógł ci dowiedzieć się, jak wyświetlić wpis WordPress tylko wtedy, gdy ma określone pole własne. Możesz również zapoznać się z naszym kompletnym przewodnikiem na temat edycji witryny internetowej WordPress i naszymi eksperckimi wyborami najlepszych wtyczek Figma dla WordPress.

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

12 komentarzyZostaw odpowiedź

  1. Syed Balkhi

    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. ahmed

    i have a question sir if i want to display single post and custom fields then what i should do.
    i dont want to display the post with specific custom fields. i want to display all custom fields of post

  3. Dave101

    Hi, thank for the useful tutorial. I have a question, in a wordpress website i set a meta value named „meta_country” and then i set every post with the country of the article, like „us”, „uk”, „fr”… Now I’m trying to add somewhere in the home of the blog a link that show list of all post with a specific country and a specific tag. For example all „UK” post tagged „APPLE”.
    I don’t understand how to do that, someone could help me?

  4. Максим Каминский

    great thanks, it help wery well!

  5. Mario M

    I wasnt able to generate any results unless I included „post_type” parameter into the query.

    ie: $the_query = new WP_Query(’post_type=page&meta_key=color’);

  6. sacha

    Wonderful, just so simple and clean.
    Thank you.

  7. scottlee.me

    @ad Great question! I’m curious too.

  8. ad

    Hi,

    How could I show posts that DON’T have a specific Custom Field? Any idea?

    Thanks!!!

    • tara tin

      as I know from php it must be meta_key!=’your key’

      ;just you need to know that „!” means „not”

  9. brunobruno2

    Beatiful! Many thanks for sharing it. Works like a charm.

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ę.