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

Så här visar du ett WordPress-post endast om det har ett specifikt customze-fält

Du kanske har lagt till ett anpassat fält i dina WordPress-inlägg och bara vill visa inlägg med det fältet. Eller så försöker du skapa en särskild sida som listar inlägg med ett visst värde i ett anpassat fält. Du är inte ensam om det!

En av våra läsare frågade hur man gör, och vi tänkte att det vore bra att dela med oss av svaret till alla.

Med anpassade fält kan du lägga till extra information i dina inlägg och sidor. De är utmärkta för att organisera och filtrera ditt innehåll. I den här artikeln visar vi dig hur du visar WordPress-inlägg endast om de har ett specifikt anpassat fält.

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

Observera: Denna handledning handlar om att visa WordPress-inlägg om de har ett värde inmatat i ett specifikt anpassat fält. Om du vill visa anpassade fält på framsidan av ett WordPress-inlägg kan du läsa vår guide om hur du visar anpassade fält i WordPress-teman.

Varför visa WordPress Posts med ett specifikt Custom Field?

När du skapar ett post på din website i WordPress kan du använda custom fields för att add to ytterligare metadata till posten. Metadata är information om posten, t.ex. rubrik, författare och publiceringsdatum.

Anpassade fält är ett avancerat WordPress-koncept, och det finns många sätt att lägga till anpassade fält i WordPress. Du hittar massor av användbara tips om hur du använder och visar anpassade fält i vårt inlägg WordPress Custom Fields 101: Tips, tricks och hacks.

You Can Add Metadata to a Post Using Custom Fields

En av våra användare frågade oss hur man visar WordPress-poster endast om ett specifikt customze-fält finns. Detta kan vara användbart om du vill skapa en custom page som listar alla posts som innehåller ett specifikt custom field och/eller värde.

Efter att ha svarat tillbaka med svaret tyckte vi att det skulle vara bäst att dela det med alla andra så att den större WordPress.org-communityn också kan dra nytta av det.

Edit Your WordPress Theme Files: Vad du bör tänka på

För att kunna följa denna tutorial på rätt sätt, här är några saker du bör tänka på:

  1. Denna tutorial innebär att du måste editera dina WordPress theme-filer med kod, så det är ej den mest lämpliga för nybörjare. Om du är new på det här behöver du läsa vår guide om hur du copy and paste kod i WordPress.
  2. Vi rekommenderar att du säkerhetskopierar din website och/eller använder en staging-miljö så att din live site inte påverkas när ett error uppstod. Detta beror på att du kommer att lägga till kod i dina theme-filer, vilket kan vara riskabelt.
  3. Vi rekommenderar att du förstår hur mall-hierarkin i WordPress fungerar så att du vet var du ska add to koden senare.
  4. Du måste också bekanta dig med hur WordPress-loopar fungerar eftersom vi kommer att anropa dessa parametrar i en WordPress-sökning.

Observera också att den här handledningen endast fungerar med klassiska WordPress-teman, eftersom blockteman har en annan uppsättning temafiler.

Med detta sagt, låt oss ta en titt på hur man visar ett WordPress-inlägg endast om det har ett specifikt anpassat fält.

Visar ett WordPress Post endast om det har ett specifikt Custom Field

Innan vi visar dig koden du behöver använda måste du veta vilken theme-fil du behöver add to. Mest troligt kommer det att vara en page template, som index.php, archive.php eller page.php.

Låt oss säga att du vill add to filen index.php i temat Twenty Twenty-One. Så här gillar WordPress loop-delen av den filen för tillfället:

<?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();

Den här koden använder WordPress standardloop (have_posts( ) och the_post()) för att visa posts. Denna metod är lämplig för de flesta standard WordPress themes och används för att visa posts utan någon customize filtrering eller sortering.

Låt oss nu säga att du använder det anpassade fältet ’color’ som i exemplet ovan. Du måste ersätta hela den koden med snippet under:

<?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();

I den här nya koden introducerade vi en anpassad sökning ($the_query = new WP_Query('meta_key=color');) för att hämta posts baserat på ett specifikt custom field-värde (i det här fallet posts med ett custom field ’color’).

Den använder sedan en anpassad slinga (if ($the_query->have_posts()))) för att iterera över de posts som hämtas av denna customize-fråga och visar varje posts content på samma sätt som det första snippet.

Vi addade också funktionenwp_reset_postdata() för att säkerställa att WordPress återgår till att visa alla posts korrekt efter customizer-sökningen. Detta säkerställer att webbplatsen fungerar smidigt och visar rätt content för användarna.

Nu, om du vill visa specifika posts som har ett custom field med ett specifikt värde, så behöver du bara ändra sökningen från rad 3 så här:

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

Detta kommer att visa alla posts som har ett ”blue”-värde i något customize-fält.

Om du vill se till att fältet ”färg” har ett ”blått” värde, kommer din sökning att se ut så här:

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

Du kan lära dig mer om ytterligare parametrar som du kan använda i din sökning på WordPress WP_Query code reference page.

När du har saved koden i PHP-filen för page template kan du kontrollera din WordPress site on the front end för att se din kod i action.

Lär dig fler sätt att anpassa din WordPress-webbplats

Här är fler sätt du kan anpassa dina WordPress-sidor:

Vi hoppas att denna handledning hjälpte dig att lära dig hur du visar ett WordPress-inlägg endast om det har ett specifikt anpassat fält. Du kanske också vill se vår kompletta guide om hur du redigerar en WordPress-webbplats och våra expertval av de bästa Figma-pluginsen för 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.

Avslöjande: Vårt innehåll stöds av våra läsare. Det innebär att om du klickar på några av våra länkar, kan vi tjäna en provision. Se hur WPBeginner finansieras, varför det är viktigt, och hur du kan stödja oss. Här är vår editoriala process.

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.

Den ultimata WordPress-verktygslådan

Få GRATIS tillgång till vår verktygslåda - en samling WordPress-relaterade produkter och resurser som varje professionell användare bör ha!

Reader Interactions

11 kommentarerLämna ett svar

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

  2. 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?

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

    great thanks, it help wery well!

  4. Eduard Unruh

    omg finally THANKS!

  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.

Lämna ett svar

Tack för att du väljer att lämna en kommentar. Tänk på att alla kommentarer modereras enligt våra policy för kommentarer, och din e-postadress kommer INTE att publiceras. Vänligen använd INTE nyckelord i namnfältet. Låt oss ha en personlig och meningsfull konversation.